У меня возникают проблемы с чем-то, что работает в примере с блокнотом. Здесь код из 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: column '_id' не существует
Итак, вернемся к SQLite 3, чтобы узнать, что отличается от моей схемы:
sqlite > .schema CREATE TABLE android_metadata (locale TEXT); CREATE TABLE круги (_id целочисленный первичный ключ автоинкремент, последовательность целое число, радиус real, x real, y real);
Я не вижу, как мне не хватает "_id".
Что я сделал неправильно?
Одна вещь, которая отличается от моего приложения и примера с блокнотом, - это что я начал с создания моего приложения с нуля, используя Мастер Eclipse, пока образец приложения уже собрано. Является есть какие-то экологические изменения, которые мне нужно сделать для нового приложения использовать базу данных SQLite?