2014-01-28 4 views
2

Я работаю над проектом, который содержит таблицы в SQL и показывает их в ListViews, я получаю «column» _id «не существует», когда я пытаюсь добраться до активность, содержащую listview, я проверил здесь другие ответы, и все говорят, что я должен иметь colum с именем «_id», и я делаю, что еще может вызвать эту ошибку?столбец «_id» не существует с использованием SQLite с android

это мой константы класса

final static String DB_CLIENTS_ID = "_id"; 
    final static String DB_CLIENTS_NAME = "name"; 
    final static String DB_CLIENTS_BALANCE = "balance"; 
    final static String DB_CLIENTS_IDNUM = "idNum"; 
    final static String DB_CLIENTS_TYPE = "type"; 

здесь функция хендлер, которая получает curser:

public Cursor queryClients(){ 

       db = dbOpenHelper.getReadableDatabase(); 


       Cursor cursor = db.query(dbConstants.TABLE_NAME_CLIENTS, 
          null, null, null, null, null, 
          dbConstants.DB_CLIENTS_NAME+ " ASC");   

       return cursor; 
      } 

Вот фрагмент кода, который использует curser сделать ListView:

dbhendler = new dbHendler(this); 
     Cursor c = dbhendler.queryClients(); 
     startManagingCursor(c); 

     String[] from = new String[] {dbConstants.DB_CLIENTS_ID, dbConstants.DB_CLIENTS_NAME,dbConstants.DB_CLIENTS_BALANCE}; 

     int[] to = new int[] {R.id.account_list_id_number, R.id.account_list_client_name, R.id.account_list_balance}; 


     adapter = new SimpleCursorAdapter(this, R.layout.account_list_line, c, from, to); 

ListView lv = (ListView) findViewById(R.id.listView1); 

     lv.setAdapter(adapter); 

Что может быть проблемой, кроме того, что у вас нет колла, называемого «_id»?

редактировать:

здесь журнал кошки:

01-28 10: 00: 31,806: E/AndroidRuntime (27937): java.lang.RuntimeException: Невозможно запустить активность ComponentInfo {ком. ziv.bank_app/com.ziv.bank_app.ClientListActivity}: java.lang.IllegalArgumentException: колонка '_id' не существует

редактировать:

код для создания таблицы:

public void onCreate(SQLiteDatabase db) { 

     String sql1 = "" 
       + "CREATE TABLE "+ dbConstants.TABLE_NAME_CLIENTS+ " (" 
       +dbConstants.DB_CLIENTS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
       +dbConstants.DB_CLIENTS_NAME + " TEXT," 
       +dbConstants.DB_CLIENTS_IDNUM + " INTEGER," 
       +dbConstants.DB_CLIENTS_TYPE + " TEXT," 
       +dbConstants.DB_CLIENTS_BALANCE + " REAL" 
       + ")"; 

     db.execSQL(sql1); 
+0

включают в себя возможно 'выход logcat'! –

+0

Добавить код для создания таблицы? –

+0

@PareshMayani Mayani Я добавил первые несколько строк logcat –

ответ

3

когда первый Seing проблему я видел здесь, что ответ должен был иметь строку с именем «_id», я изменил его в моем файле создания таблицы, однако новый файл никогда не был создан, он был бы создан на новом устройстве/эмуляторе, но по моему он все еще использовал тот, который я создал.

создать новый файл базы данных, просто изменив его имя в коде создания таблицы, и проблема будет решена.

редактировать:

также повышение номер версии будет делать трюк

1

Если я не ошибаюсь, то попробуйте это в queryClients():

Cursor cursor = db.query(dbConstants.TABLE_NAME_CLIENTS, new String[] {"_id","name","balance","idNum","type"}, 
null, null, null, null, "name ASC "); 

или Попробуйте это:

Cursor mCursor = db.query(true, dbConstants.TABLE_NAME_CLIENTS, 
      new String[] {"_id","name","balance","idNum","type"}, 
null,null, null, null, null, null); 

    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
+0

@ ziv-kesten вы можете попробовать. Это то, что говорится в вышеприведенных комментариях. Надеюсь, это поможет вам –

1

У меня была аналогичная проблема, это то, как я попробовал его

Вы можете задать ему вопрос:

1) сначала удалите database с device или emulator

emulator: в data/data/databases

device: использовать adb shell и run-as команду

2) создать новый database с другим именем (не такой же, как предыдущий).

Позвольте мне знать, если проблема не устранена

Надежда Это может помочь вам ...

+0

это сработало !!! Большое спасибо!!! –

+0

@ZivKesten В любое время :) люблю помогать – nitesh

 Смежные вопросы

  • Нет связанных вопросов^_^