Как я могу проверить, есть ли в моей таблице sqlite данные? - PullRequest
12 голосов
/ 09 декабря 2010

EDIT, Слегка изменил код, основываясь на ответах ниже, но все еще не получил его. Я также добавил сообщение в журнал, чтобы сообщить мне, возвращает ли getCount> 0, и это так, поэтому я подозреваю, что что-то может быть не так с моим запросом? или мое использование курсора ..

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

Ниже мой код, хотя у меня нет ошибок, когда я вытаскиваю файл .db, я вижу, что он не работает. Как бы вы подошли к этой проблеме?

public void onCreate(SQLiteDatabase db) {
        Log.i("DB onCreate", "Creating the database...");//log message
        db.execSQL(createCATBUDTAB);
        db.execSQL(createTWOWEETAB);
        try{
            Cursor cur = db.rawQuery("SELECT COUNT(*) FROM CAT_BUD_TAB", null);
        if (cur.getCount() > 0){
            Log.i("DB getCount", " getcount greater than 0");//log message
            //do nothing everything's as it should be
        }
        else{//put in these insert statements contained in the array
            Log.i("DB getCount", " getcount less than 0, should read array");//log message
            for(int i=0; i<13; i++){
                db.execSQL(catInsertArray[i]);
            }
        }
        }catch(SQLiteException e){System.err.println("Exception @ rawQuery: " + e.getMessage());}
    }

Извините, если это довольно глупый вопрос или подход, я новичок во всем этом. Любые ответы очень ценятся!

Ответы [ 13 ]

0 голосов
/ 27 августа 2015

Используйте это:

public Boolean doesRecordExist(String TableName, String ColumnName, String ColumnData) {
    String q = "Select * FROM "+TableName+" WHERE "+ColumnName+"='"+ColumnData+"';";
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(q, null);
    if (cursor.moveToFirst()) {
        return true;
    } else {
        return false;
    }
}


Пример
if (doesRecordExist("student", "name", "John") == true)
 {
 //Do Something
 } else { //Do something
 }

Изменить это согласноваше использование:

String q = "Select * FROM "+TableName+" WHERE "+ColumnName+"='"+ColumnData+"';";
0 голосов
/ 07 мая 2015

Мое приложение зависало при попытке использовать вышеуказанные коды, поэтому я сделал это, и теперь оно работает отлично!

public boolean checkIfEmpty()
{
    Cursor cursor = getDatabase().query(DatabaseHelper.Products.TABLE,
            DatabaseHelper.Products.COLUMNS, null, null, null, null, null);

    if (cursor != null)
    {
        try
        {
            //if it is empty, returns true.
            cursor.moveToFirst();
            if (cursor.getInt(0) == 0)
                return true;
            else
                return false;
        }

        //this error usually occurs when it is empty. So i return true as well. :)
        catch(CursorIndexOutOfBoundsException e)
        {
            return true;
        }

    }
    return false;
}
0 голосов
/ 13 февраля 2014

Вот что я сделал ...

Cursor cur = db.rawQuery("SELECT count(*) FROM " + SQLHelper.TABLE_CART, null);
if (cur != null && cur.moveToFirst() && cur.getInt(0) > 0) {
    Log.i(getClass().getName(), "table not empty");
} 
else {
    Log.i(getClass().getName(), "table is empty");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...