Первым параметром должно быть имя таблицы. У вас есть в базе таблица "id"?qw123 писал(а):Подскажите пожалуйста в чём ошибка
Cursor c = db.query("id", null, "p1=? or p2=? or p3=?", new String[] {p1, p2, p3}, null, null, null);
Урок 34. Хранение данных. SQLite
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 34. Хранение данных. SQLite
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 34. Хранение данных. SQLite
http://developer.android.com/reference/ ... html#query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String)
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
Да, это и есть моя единственная таблица "id"KamiSempai писал(а):Первым параметром должно быть имя таблицы. У вас есть в базе таблица "id"?qw123 писал(а):Подскажите пожалуйста в чём ошибка
Cursor c = db.query("id", null, "p1=? or p2=? or p3=?", new String[] {p1, p2, p3}, null, null, null);
Re: Урок 34. Хранение данных. SQLite
тогда смотрите, что пишется в логах, гадалок тут нет.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
То есть условие записано верно и теоретически должно всё работать, так?
Re: Урок 34. Хранение данных. SQLite
нет, не так. Тут что угодно может не работать. Но это выясняется при запуске приложения.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
если у тебя последние параметр null, то можно использовать этот метод
query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
Спасибо, оказывается при создании таблицы запятую пропустил и два поля таблицы слились в одно. Непривычно написание одного метода на несколько строк.Foenix писал(а):тогда смотрите, что пишется в логах, гадалок тут нет.
Re: Урок 34. Хранение данных. SQLite
всегда смотрите на сообщения компилятора до запуска и в лог после запуска - все будет хорошо.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
Смотришь код, всё ясно, как день.
Но когда закрываешь урок и пытаешься сам написать подобное...
Что-то свое:
1.Тут вообще не понятно, как строка влияет на создание БД...
-------------------------
2.
Тут выкидывает с ошибкой:
Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.
Make sure the Cursor is initialized correctly before accessing data from it.
С созданием / добавлением вроде проблем нет...
Дальше - хуже?
Но когда закрываешь урок и пытаешься сам написать подобное...
Что-то свое:
1.
Код: Выделить всё
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table Contacts ("
+ "id integer primary key autoincrement,"
+ "Name text,"
+ "Surname text,"
+ "Age text"
+ ");");
}
-------------------------
2.
Код: Выделить всё
case R.id.btnRead:
Log.d(TAG, "--- Rows in Contacts: ---");
Cursor c = db.query("Contacts", null,null,null,null,null,null);
if(c.moveToFirst()) {
int idColIndex = c.getColumnIndex("id");
int NameColIndex = c.getColumnIndex("Name");
int SurnameColIndex = c.getColumnIndex("Surname");
int AgeColIndex = c.getColumnIndex("Age");
do {
Log.d(TAG,
"ID = " + c.getInt(idColIndex)+
"Name = " + c.getString(NameColIndex)+
"Surname = " + c.getString(SurnameColIndex)+
"Age = " + c.getString(AgeColIndex));
} while(c.moveToNext());
} else Log.d(TAG, "DB is empty");
break;
Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.
Make sure the Cursor is initialized correctly before accessing data from it.
С созданием / добавлением вроде проблем нет...
Дальше - хуже?
Завтра будет.
Лучше.
Лучше.
Re: Урок 34. Хранение данных. SQLite
вначале посмотри в какой строке ошибка
если в этих
int idColIndex = c.getColumnIndex("id");
int NameColIndex = c.getColumnIndex("Name");
int SurnameColIndex = c.getColumnIndex("Surname");
int AgeColIndex = c.getColumnIndex("Age");
или в этих
"ID = " + c.getInt(idColIndex)+
"Name = " + c.getString(NameColIndex)+
"Surname = " + c.getString(SurnameColIndex)+
"Age = " + c.getString(AgeColIndex));
значит в курсоре-результате нет такой колонки. А какой? в логе и в курсоре смотри.
если в этих
int idColIndex = c.getColumnIndex("id");
int NameColIndex = c.getColumnIndex("Name");
int SurnameColIndex = c.getColumnIndex("Surname");
int AgeColIndex = c.getColumnIndex("Age");
или в этих
"ID = " + c.getInt(idColIndex)+
"Name = " + c.getString(NameColIndex)+
"Surname = " + c.getString(SurnameColIndex)+
"Age = " + c.getString(AgeColIndex));
значит в курсоре-результате нет такой колонки. А какой? в логе и в курсоре смотри.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 34. Хранение данных. SQLite
Тут норм:
int idColIndex = c.getColumnIndex("id");
int NameColIndex = c.getColumnIndex("name");
int SurnameColIndex = c.getColumnIndex("surname");
int AgeColIndex = c.getColumnIndex("age");
"ID = " + c.getInt(idColIndex) отрабатывает,
далее выкидывает на остальных. Каждую проверил.
Но всё же прописано:
Ошибка:
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:492)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
int idColIndex = c.getColumnIndex("id");
int NameColIndex = c.getColumnIndex("name");
int SurnameColIndex = c.getColumnIndex("surname");
int AgeColIndex = c.getColumnIndex("age");
"ID = " + c.getInt(idColIndex) отрабатывает,
далее выкидывает на остальных. Каждую проверил.
Но всё же прописано:
Код: Выделить всё
ContentValues cv = new ContentValues();
SQLiteDatabase db = dbHelper.getWritableDatabase();
String name = etName.getText().toString();
String surname = etSurname.getText().toString();
String age = etAge.getText().toString();
case R.id.btnAdd:
Log.d(TAG, "--- Insert in contacts: ---");
cv.put("name", name);
cv.put("surname", surname);
cv.put("age", age);
long rowID = db.insert("Contacts", null, cv);
Log.d(TAG, "row inserted, ID = " + rowID);
break;
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:492)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
Завтра будет.
Лучше.
Лучше.
Re: Урок 34. Хранение данных. SQLite
Объясните, пожалуйста этот код.
Точнее строку db.execSQL(String sql)
Код: Выделить всё
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(tag, "--- onCreate database ---");
db.execSQL("create table Contacts ("
+ "id integer primary key autoincrement,"
+ "name text,"
+ "surname text,"
+ "age text" + ");");
}
Завтра будет.
Лучше.
Лучше.
Re: Урок 34. Хранение данных. SQLite
Цитата из урока:
В методе onCreate этого класса мы используем метод execSQL объекта SQLiteDatabase для выполнения SQL-запроса, который создает таблицу. Напомню – этот метод вызывается, если БД не существует и ее надо создавать. По запросу видно, что мы создаем таблицу mytable с полями id, name и email.
В методе onCreate этого класса мы используем метод execSQL объекта SQLiteDatabase для выполнения SQL-запроса, который создает таблицу. Напомню – этот метод вызывается, если БД не существует и ее надо создавать. По запросу видно, что мы создаем таблицу mytable с полями id, name и email.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 34. Хранение данных. SQLite
http://www.sqlite.org/lang_createtable.htmlSky-VIN писал(а):Объясните, пожалуйста этот код.Точнее строку db.execSQL(String sql)Код: Выделить всё
@Override public void onCreate(SQLiteDatabase db) { Log.d(tag, "--- onCreate database ---"); db.execSQL("create table Contacts (" + "id integer primary key autoincrement," + "name text," + "surname text," + "age text" + ");"); }
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 34. Хранение данных. SQLite
Похоже данная проблема только у меня. Я уже многое перепробывал. Но логи - не работают. Что можно сделать?
Re: Урок 34. Хранение данных. SQLite
Вот скрин, вдруг я что-то не там смотрю
Re: Урок 34. Хранение данных. SQLite
Открой перспективу DDMS в правом верхнем углу и там найди logcatAlexKem писал(а):Вот скрин, вдруг я что-то не там смотрю
Java Core -> JDBC -> GoF -> Android SDK ->...
Телепрограмма в твоем смарте Телепрограмма
Телепрограмма в твоем смарте Телепрограмма
Re: Урок 34. Хранение данных. SQLite
Открыл. Никаких сообщений там нет. (Скрин приложил) Особенности. Когда открывал сначала DDMS, а потом эмулятор, то эмулятор был пустой (приложение не запустилось), а в DDMS не было девайса. Потом попробывал сначала открыть приложение в эмуляторе, а потом уже перейти на DDMS. Вот тогда приложение работало, но ЛогКэт все равно пустой.Leeroy писал(а):Открой перспективу DDMS в правом верхнем углу и там найди logcatAlexKem писал(а):Вот скрин, вдруг я что-то не там смотрю
Также сообщаю, что использую девайс под андроидом 4.2 (в уроках советуют 2.3). Также отмечу, что на более ранних уроках (урок 12, где показывают принципы работы с логом), лог работал. Между этим я ничего не менял, разве что ставил еще одно устройство для Google Map (урок перед хранением данных).
Также отмечу, что я не накапливаю пройденные уроки, а каждый раз стираю андроид проекты, и создаю заново.
Re: Урок 34. Хранение данных. SQLite
открывай эмулятор не автоматически при запуске приложения, а отдельно, даже до запуска эклипса из менеджера AVD.
если лог будет пустой, то перезапусти ADB
adb kill-server
adb start-server
adb devices
последнюю команду можно опустить, она просто список подключенных устрйоств открывает.
если лог будет пустой, то перезапусти ADB
adb kill-server
adb start-server
adb devices
последнюю команду можно опустить, она просто список подключенных устрйоств открывает.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198