У меня проблемы с чем-то, что работает в примере с Блокнотом.Вот код из NotepadCodeLab / Notepadv1Solution:
String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
int[] to = new int[] { R.id.text1 };
SimpleCursorAdapter notes = new SimpleCursorAdapter(this,
R.layout.notes_row, c, from, to);
Этот код работает нормально.Но для ясности я запустил утилиту ADB и запустил SQLite 3. Я проверил схему следующим образом:
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE notes (_id integer primary key autoincrement, title text
not null, body text not null);
Все кажетсяхорошо для меня.
Теперь перейдем к моему заявлению, которое, насколько я вижу, в основном то же самое с небольшими изменениями.Я упростил и упростил свой код, но проблема остается.
String[] from = new String[] { "x" };
int[] to = new int[] { R.id.x };
SimpleCursorAdapter adapter = null;
try
{
adapter = new SimpleCursorAdapter(this, R.layout.circle_row, cursor, from, to);
}
catch (RuntimeException e)
{
Log.e("Circle", e.toString(), e);
}
Когда я запускаю свое приложение, я получаю исключение RuntimeException и следующие выходные данные в LogCat из моего оператора Log.e()
:
Сообщение LogCat:
java.lang.IllegalArgumentException: столбец '_id' не существует
Итак, вернемся к SQLite 3, чтобы увидеть, что отличается от моей схемы:
sqlite> .schema CREATE TABLE android_metadata (локаль TEXT);Круги CREATE TABLE (автоинкремент первичного ключа целого числа _id, целое число последовательности, вещественное число радиуса, действительное число x, действительное число y);
Я не вижу, как мне не хватает _id.
Что я сделал не так?
Одна вещь, которая отличается от моего приложения и примера Блокнота, состоит в том, что я начал с создания своего приложения с нуля с помощью мастера Eclipse, в то время как пример приложения уже собран.Есть ли какие-то изменения в окружающей среде, которые мне нужно сделать, чтобы новое приложение использовало базу данных SQLite?