2016-04-13 23 views
1

Bir android uygulaması üzerinde çalışıyorum ve çözemediğim bir sorunum var. Umarım bana yardımcı olabilirsiniz. Hepinizin bildiği gibi, hata o tabloyu bulamıyor olmasıdırAndroid SQLiteDatabase Tablosu

android.database.sqlite.SQLiteException: table FBFriends has no column named id (code 1): , while compiling: INSERT INTO FBFriends(id,name) VALUES (?,?) 

:

bu hatayı alıyorum. Ama masayı hazırlıyorum.

public DatabaseManager(Context context) { 
      //referentie naar cursus 
      super(context, DATABASE_NAME, null, 1); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      //SQL for creating a new table 

      Log.d(TAG, "Tabel gemaakd"); 
      String CREATE_DATABASE_TABLE ="CREATE TABLE Friends (id VARCHAR(255) PRIMARY KEY not null , name VARCHAR(255))"; 
      db.execSQL(CREATE_DATABASE_TABLE); 
     } 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop older database if existed 
     db.execSQL("DROP TABLE IF EXISTS Friends"); 
     Log.d(TAG, "Tabel verwijdert"); 
     // create new table 
     this.onCreate(db); 
    } 

Ve bu veritabanına veri eklemek için işlevidir.

private static final String TABLE_FBFriends = "Friends";  
private static final String KEY_ID = "id"; 
private static final String KEY_Name = "name"; 


    private static final String[] COLUMNS = {KEY_ID,KEY_Name}; 
    public boolean addPersons(ArrayList<Person> listOfPersons) 
    { 
     Log.d(TAG, "add"); 
     //get reference to writable DB 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Log.d(TAG, "toevoegen add"); 
     //create ContentValues to add key "column"/value 
     for (Person p:listOfPersons) { 
      Log.d(TAG, "FOREACH"); 
      ContentValues values = new ContentValues(); 
       values.put(KEY_ID, p.getId()); 
      Log.d(TAG, "first VALUE"); 
      values.put(KEY_Name, p.getName()); // get title 
      Log.d(TAG, "second VALUE"); 
      Log.d(TAG, "add " + values.toString()); 
      try{ 
       // insert orThrow an exeption 
       db.insertOrThrow(TABLE_FBFriends, null, values); 
//key/value -> keys = column names/ values = column values 
       } 
       catch (SQLException e) { 
        Log.d(TAG, e.toString()); 
        return false; 
        } 
     } 
      db.close(); 
      return true; 
     } 

Teşekkürler beyler!

Selamlar, Stijn

+2

Tablonuza Arkadaşlar adlı. Ama hata FBFriends diyor. DB'nizde eski bir tablonuz var mı? –

+0

Tüm logcat'ınızı ekleyebilir misiniz? –

+0

Bildiğimden, bunu buna değiştirdim. (aşağıda önerildiği gibi) db.insertOrThrow ("Arkadaşlar", null, değerler); Ve şimdi bu hatayı alıyorum. android.database.sqlite.SQLiteException: böyle bir tablo yok: Arkadaşlar (kod 1): derlerken: INSERT INTO Arkadaslari (id, isim) VALUES (?,?) – StijnB

cevap

1

hala eski tablo var ve yeni tablo yok çünkü. Öncelikle, bir tablo oluşturduktan sonra ad tablosunu doğrudan onCreate veritabanı yardımcınızda değiştirmeyin. çünkü sadece ilk kez yürütme tablosunu oluşturur. ad tablonuzu değiştirmek isterseniz, tablo sorgularını değiştirmek ve eski ad tablosunu yenisiyle değiştirmek için bir işlev oluşturun.

+0

Teşekkürler! Şimdi benim için açık! – StijnB