2014-02-22 9 views
0

我在使用我的數據庫時遇到問題。請檢查:android.database.sqlite.SQLiteException:表數據沒有名爲_Y的列

// Database Name 
private static final String DATABASE_NAME = "Poloha"; 

// Data table name 
private static final String DATA = "Data"; 

// Data Table Columns names 
private static final String KEY_Y= "Y"; 
private static final String KEY_X= "X"; 
private static final String KEY_ID = "_id"; 
private static final String KEY_NAZEV = "Nazev"; 
private static final String KEY_MAC = "MAC"; 

public void onCreate(SQLiteDatabase db) 
{ 
    String CREATE_CONTACTS_TABLE = "CREATE TABLE IF NOT EXISTS" 
      + DATA + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY autoincrement," 
      + KEY_NAZEV + " TEXT NOT NULL," 
      + KEY_MAC + " TEXT NOT NULL," 
      + KEY_X + " TEXT NOT NULL," 
      + KEY_Y + " TEXT NOT NULL);" ; 
    db.execSQL(CREATE_CONTACTS_TABLE); 
} 

現在我想用添加一些值:

db.pridejZaznam(new Data(1,1,1,"NAZEV_1","MAC_1")); 
db.pridejZaznam(new Data(2,2,2,"NAZEV_2","MAC_2")); 
db.pridejZaznam(new Data(3,3,3,"NAZEV_3","MAC_3")); 
db.pridejZaznam(new Data(4,4,4,"NAZEV_4","MAC_4")); 

問題是,logcat的是顯示我這個錯誤:

02-22 10:33:26.336: E/SQLiteLog(813): (1) table Data has no column named Y 
02-22 10:33:26.375: E/SQLiteDatabase(813): Error inserting Y=1 MAC=MAC_1 Nazev=NAZEV_1 _id=1 X=1 
02-22 10:33:26.375: E/SQLiteDatabase(813): android.database.sqlite.SQLiteException: table Data has no column named Y (code 1): , while compiling: INSERT INTO Data(Y,MAC,Nazev,_id,X) VALUES (?,?,?,?,?) 

任何想法,我應該怎麼辦?我檢查類似的錯誤,並發現創建表時只有一個缺少空格的解決方案,但如果我沒有失明,我沒有任何缺失。感謝所有:)

回答

5
public void onCreate(SQLiteDatabase db) 
{ 
    String CREATE_CONTACTS_TABLE = "CREATE TABLE IF NOT EXISTS" 
      + DATA + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY," // and auto increment will be handled with       primary key 
      + KEY_NAZEV + " TEXT NOT NULL," 
      + KEY_MAC + " TEXT NOT NULL," 
      + KEY_X + " TEXT NOT NULL," 
      + KEY_Y + " TEXT NOT NULL);"; 
    db.execSQL(CREATE_CONTACTS_TABLE); 
} 
+0

我倒是喜歡,但我沒有信譽15 :( – user3340336

1

你不需要添加KEY_ID,數據庫會自動添加它,從你的插入查詢中刪除第一個值:

db.pridejZaznam(new Data(1,1,"NAZEV_1","MAC_1"));

等..

和使用方法和變量的英文名稱,以便更好地滿足需求

+0

謝謝,問題是我的數據庫的定義是這樣的: 公共數據(long id,字符串nazev,字符串MAC,int x,int y) 經過一些更改並希望所有5個變量都能被插入,我怎樣才能強制它自動添加ID? – user3340336

+0

保存我的日子..我是做同樣的錯誤 - 傳遞ID但我認爲這不是必需的。數據庫自動添加密鑰。 – atp9

1

您需要在關鍵字EXISTS和表名稱之間有空格:

String CREATE_CONTACTS_TABLE = "CREATE TABLE IF NOT EXISTS" 
     + DATA + "(" 

變化:

String CREATE_CONTACTS_TABLE = "CREATE TABLE IF NOT EXISTS " 
     + DATA + "(" 

編輯表架構之後,所以onCreate()被再次運行卸載應用程序。另請參閱:When is SQLiteOpenHelper onCreate()/onUpgrade() run?

+0

謝謝 - 這對我有用。 – user5493029

0

只需刪除應用程序並重新安裝即可。

的MYSQLite表存儲在本地設備,並沒有追加表

相關問題