2015-06-06 10 views
1

Я хочу, чтобы проверить столбцы (не значение) в agregasi таблицы, если столбцы существуют что-то делать, но если столбцы не существуют шоу/печать сообщения «Столбец не существует». я мог бы запустить код ниже в то время как существуют столбцы:SQLite Проверьте, если столбец существует или нет

String keywords1={'pesawat','terbang'}; 
String sql1 = "SELECT " + keywords + " FROM agregasi"; //columns exist at agregasi table 
Cursor c1 = myDbHelper.rawQuery(sql1, null); 
if (c1.moveToFirst()) { 
    // i can do something (no problem) 
} 

Но у меня есть проблема, когда столбцы имя я изменить на цели (для проверки). Что мне делать, чтобы печатать сообщение об ошибке (в режиме android/java)?

**String keywords2={'psawat','terang'};** 
String sql2 = "SELECT " + keywords + " FROM agregasi"; //columns does not exist at table 
Cursor c2 = myDbHelper.rawQuery(sql2, null); 
// what should i do get error message and show/print using toast 
+1

Покажите код создания таблицы. Похоже, что есть ошибка. –

+1

Сначала проверьте, является ли курсор c1 или c2 нулевым или нет. Если null, то распечатать ошибку – Pankaj

+1

Возможный дубликат [Проверка наличия столбца в базе данных приложений в Android] (http://stackoverflow.com/questions/4719594/checking-if-a-column-exists-in-an-application -database-in-android) –

ответ

-1

Попробуйте это работает отлично :)

Cursor res = db.rawQuery("PRAGMA table_info("+tableName+")",null); 
int value = res.getColumnIndex(fieldName); 
+1

Эта прагма даст вам информацию о столе. Не должно быть столбца, названного как столбец, который вы ищете в этом курсоре. – Janusz

0

Вот общий метод, который вы можете использовать, чтобы проверить, существует ли конкретный столбец в конкретной таблице:

public boolean isColumnExists(SQLiteDatabase sqliteDatabase, 
           String tableName, 
           String columnToFind) { 
    Cursor cursor = null; 

    try { 
     cursor = sqLiteDatabase.rawQuery(
       "PRAGMA table_info(" + tableName + ")", 
       null 
     ); 

     int nameColumnIndex = cursor.getColumnIndexOrThrow("name"); 

     while (cursor.moveToNext()) { 
      String name = cursor.getString(nameColumnIndex); 

      if (name.equals(columnToFind)) { 
       return true; 
      } 
     } 

     return false; 
    } finally { 
     if (cursor != null) { 
      cursor.close(); 
     } 
    } 
} 
Смежные вопросы