У меня возникла проблема с подключением приложений для Android к базе данных SQLite. У меня есть экземпляр базы данных SQLite в папке «Активы». Операция «Выбрать» возвращает данные, которые вручную вставляются в базу данных. Но операции записи (вставка, обновление, удаление) не выполняются. Я использовал «this.getReadableDatabase()» и заменен на «this.getWritableDatabase», аналогично, SQLiteDatabase.openDatabase (myPath, null, SQLiteDatabase.OPEN_READONLY) был заменен SQLiteDatabase.openDatabase (myPath, null, SQLiteDatabase.OPEN_READWRITE), но все еще бесполезно. Я тестирую Samsung Galaxy S i-90003 с версией 2.3.6. Кто-нибудь, пожалуйста, помогите мнеAndroid-Невозможно записать в базу данных
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
// values.put(KEY_ID,contact.getId());//Contact Id
values.put(KEY_NAME, contact.getName()); // Contact Name
values.put(KEY_IMAGE, contact.getImage()); // Contact Phone
// Inserting Row
try {
if(isTableExists(TABLE_IMAGES,true)) {
db.insert(TABLE_IMAGES, null, values);
}
}catch (Exception e) {
System.out.println("Error inserting:"+e.getMessage());
}
db.close(); // Closing database connection
public boolean isTableExists(String tableName, boolean openDb) {
if(openDb) {
if(db == null || !db.isOpen()) {
db = getWritableDatabase();
}
if(!db.isReadOnly()) {
db.close();
db = getWritableDatabase();
}
}
Cursor cursor = db.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'", null);
if(cursor!=null) {
if(cursor.getCount()>0) {
cursor.close();
return true;
}
cursor.close();
}
return false;
}
Я бы перепроверить вы используете 'getWritableDatabase 'метод. – Doomsknight
Вы получаете какие-то исключения? Использовать блок catch try? – Jayesh
есть исключение, в котором говорится, что «курсор не закрыт». он указывает на String myPath = DB_PATH + DATABASE_NAME; db = SQLiteDatabase.openDatabase (myPath, null, SQLiteDatabase.OPEN_READWRITE); – Kittu