Чтение из SQLITE в Android всегда возвращает 0 строк

Я пытаюсь впервые использовать Sqlite в Android со смешанными результатами.

В моем первом действии я загружаю несколько строк в таблицу, используя такой код

public void addTableStatus(String tableId, String name) {

    Log.d("DB", "Before Insert :: " + "Id=[" + tableId + "]");

    if (sd == null) {
        Log.d("DB", "Get Database");
        sd = getWritableDatabase();
    }

    ContentValues cv = new ContentValues();
    cv.put(V2VocabsTable.ID, tableId);
    cv.put(V2VocabsTable.NAME, name);
    cv.put(V2VocabsTable.LOADED, "NO");

    long result = sd.insert(V2VocabsTable.TABLE_NAME, null, cv);

    Log.d("DB", "After Insert :: " + result);

    String query = "SELECT * from " + V2VocabsTable.TABLE_NAME ;

    Log.i("DB2", "Query    : " + query);
    Cursor mCursor = sd.rawQuery(query, null);
    Log.i("DB2", "Result : " + mCursor.getCount());
}

Файл журнала показывает поступающие данные следующим образом:

01-13 21:54:09.788: D/DB(22744): Before Insert :: Id=[ZU055]
01-13 21:54:09.798: D/DB(22744): After Insert :: 129
01-13 21:54:09.798: I/DB2(22744): Query    : SELECT * from v2TableStatus
01-13 21:54:09.798: I/DB2(22744): Result : 129
01-13 21:54:09.798: D/DB(22744): ZU055 :: WaitingListType-v1.0.xml
01-13 21:54:09.798: D/DB(22744): Before Insert :: Id=[ZU056]
01-13 21:54:09.798: D/DB(22744): After Insert :: 130
01-13 21:54:09.798: I/DB2(22744): Query    : SELECT * from v2TableStatus
01-13 21:54:09.798: I/DB2(22744): Result : 130
01-13 21:54:09.798: D/DB(22744): ZU056 :: DCRConsentToShareIndicator-v1.0.xml

Однако, когда я пытаюсь прочитать таблицу в другом действии, в таблице нет никаких данных. Я выполняю тот же запрос (в качестве теста) и всегда получаю 0 строк.

public void test(String tableName) {

    if (sd == null) {
        sd = getWritableDatabase();
    }

    tableName = tableName.substring(5).trim();

    String query;

    Log.i("DB_", "Test for : [" + tableName + "]");

    query = "SELECT * from " + V2VocabsTable.TABLE_NAME ;

    Log.i("DB2", "Query    : " + query);
    Cursor mCursor = sd.rawQuery(query, null);
    Log.i("DB2", "Result : " + mCursor.getCount());
}


01-13 21:54:18.838: I/DB_(22744): Test for : [0136]
01-13 21:54:18.838: I/DB2(22744): Query    : SELECT * from v2TableStatus
01-13 21:54:18.838: I/DB2(22744): Result : 0

person BENBUN Coder    schedule 14.01.2013    source источник
comment
Вы делаете вставки в транзакцию, которая, возможно, все еще открыта?   -  person Henry    schedule 14.01.2013
comment
Нет - транзакция закрывается с помощью sd.endTransaction();   -  person BENBUN Coder    schedule 14.01.2013


Ответы (1)


Моя ошибка, мой класс dbHelper ошибочно очищал таблицы при запуске. Поэтому, когда он инициировался во втором действии, он удалил весь контент, размещенный в нем из первого действия.

person BENBUN Coder    schedule 14.01.2013