Получение значений lat long из базы данных в Android

Я следил за более ранним вопросом (находится здесь: Получить широту и долготу из базы данных SQLite для использования в Android MapOverlay)

Я понимаю код там, и моя база данных имеет аналогичную структуру в том, что она имеет 4 столбца; идентификатор, имя, широта и долгота. Я даже хочу сделать то, что там сказано, в том, что он выбирает все из этой таблицы и помещает долготу в виде точек в оверлей. Моя проблема в том, что ответ требует некоторых предварительных условий, поэтому мне просто интересно, может ли кто-нибудь помочь мне в том, что необходимо для этой работы.

Заранее спасибо, и вот текущее состояние кода, который я редактировал;

ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
        Cursor locationCursor = databaseObject.query("locations", new String[] {"image_id", "name", "lat", "lng" }, null, null, null, null);

        locationCursor.moveToFirst();
        do {
            String image_id = locationCursor.getString(locationCursor
                    .getColumnIndex("image_id"));
            String name = locationCursor.getString(locationCursor
                    .getColumnIndex("name"));
            int latitude = (int) (locationCursor.getDouble(locationCursor
                    .getColumnIndex("lat")) * 1E6);
            int longitude = (int) (locationCursor.getDouble(locationCursor
                    .getColumnIndex("lng")) * 1E6);
            items.add(new OverlayItem(new GeoPoint(latitude, longitude), image_id, name));
        } while (locationCursor.moveToNext());

В частности, я получаю сообщение об ошибке с databaseObject.query, которое, как я предполагаю, связано с тем, что у меня нет частей до этого.

Редактировать.

Для дополнительной ясности цель состоит в том, чтобы получить значения широты и долготы из моей таблицы в phpmyadmin и показать их в моем приложении для Android на наложении карт Google. Приведенный выше код является отображением примера, который я нашел, но не смог заставить его работать, потому что перед кодом требовалось несколько частей.


person user1354861    schedule 25.04.2012    source источник


Ответы (2)


В случае, если запрос не возвращает никаких записей, курсор будет пустым, и оператор do while все равно будет выполнен, что в конечном итоге приведет к ошибкам. Попробуй это

Отредактировано::

        SQLiteDatabase databaseObject = null; 
        databaseObject = this.openOrCreateDatabase(SAMPLE_DB_NAME, MODE_PRIVATE, null);
        ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
        Cursor locationCursor = databaseObject.query("locations", new String[] {"image_id", "name", "lat", "lng" }, null, null, null, null);


         while (locationCursor.moveToNext()){
            String image_id = locationCursor.getString(locationCursor
                    .getColumnIndex("image_id"));
            String name = locationCursor.getString(locationCursor
                    .getColumnIndex("name"));
            int latitude = (int) (locationCursor.getDouble(locationCursor
                    .getColumnIndex("lat")) * 1E6);
            int longitude = (int) (locationCursor.getDouble(locationCursor
                    .getColumnIndex("lng")) * 1E6);
            items.add(new OverlayItem(new GeoPoint(latitude, longitude), image_id, name));
        }
person Rakesh    schedule 25.04.2012
comment
Спасибо за быстрый ответ, однако я все еще получаю сообщение об ошибке вокруг объекта базы данных, потому что мне не хватает кода, касающегося getReadableDatabase(); Я не уверен, что это правильный способ сделать это, поскольку я уже обращаюсь к базе данных для другой таблицы, чтобы проверить данные для входа с помощью httppost. - person user1354861; 25.04.2012
comment
Конечно с этой строкой; Курсор locationCursor = databaseObject.query (местоположения, новая строка [] {image_id, имя, широта, долгота}, ноль, ноль, нуль, ноль); DatabaseObject.query не может быть разрешен, проблема с этим кодом заключается в том, что он требует, чтобы у меня был объект базы данных и метод getReadableDatabase() в коде, который я не знаю, как это сделать. Я создал таблицу с помощью phpmyadmin, содержащую эти значения выше, и я хочу взять значения широты и долготы из этой таблицы и поместить их на наложение googlemaps. Приведенный выше код был примером, который я нашел с помощью SQLite. - person user1354861; 25.04.2012
comment
Не могли бы вы показать мне строку, в которой вы создаете «databaseObject» и подключаетесь к базе данных? - person Rakesh; 25.04.2012
comment
В этом проблема, в вопросе я просил помощи в этом, потому что я не уверен - я писал код, чтобы показать, что я пытался с ним сделать :) - Извините, если это было неясно. - person user1354861; 25.04.2012
comment
плохо, перейдите по этой ссылке это расскажет вам, как создать базу данных и использовать ее в приложении для Android. Это также имеет исходный код. Ссылка внизу блога, скачать можно оттуда. Надеюсь, это поможет. Если у вас есть дополнительные вопросы, пожалуйста, ответьте здесь. - person Rakesh; 25.04.2012
comment
У меня есть таблица, созданная с помощью phpmyadmin, мне просто нужно подключиться к ней и получить данные. Поправьте меня, если я ошибаюсь, но я просто использую эту строку; sampleDB = this.openOrCreateDatabase (SAMPLE_DB_NAME, MODE_PRIVATE, null); а затем запрос в приведенном выше коде? - person user1354861; 25.04.2012
comment
да, это должно работать, при условии, что вы 'SQLiteDatabase sampleDB = null; sampleDB = this.openOrCreateDatabase (SAMPLE_DB_NAME, MODE_PRIVATE, null); ' в классе, который расширен классом Activity. - person Rakesh; 25.04.2012

Возможно, вам следует написать некоторый код на php на стороне сервера базы данных и получить свою базу данных, а затем передать результаты в виде JSON. см. эту ссылку и это.

person Hong Duan    schedule 25.04.2012
comment
Спасибо за ваш вклад. Я сталкивался с этим примером раньше, и я написал некоторый php-код на стороне сервера для выбора данных из базы данных, однако это все, что я получил с ним, поскольку я никогда не использовал JSON до времени его написания. Меня беспокоила возможность использовать это с добавлением геоточек в наложение. - person user1354861; 25.04.2012
comment
Просто проанализируйте JSON, который вы получили в своем приложении для Android, и добавьте их в оверлей. В чем проблема... - person Hong Duan; 25.04.2012
comment
Читая код в первой ссылке, я смутно понимаю, как это работает (я не слишком знаком с JSON), и я предполагаю, что конечная часть выводит его в этом формате в скобке Log.i. Мое замешательство связано с манипулированием этим для работы с наложением и геоточками. - person user1354861; 25.04.2012