2013-10-22 125 views
0

我相信錯誤在於我設置DATABASE_CREATE的方式。我在這裏錯過了什麼嗎?我得到SQLiteException其中長ID = -1。讓我知道我是否提供了足夠的細節。我試過設置KEY_ID =「_id」;SQLiteException:插入數據庫時​​出錯:語法錯誤(代碼1)

E/SQLiteLog(2385): (1) near "group": syntax error 
E/SQLiteDatabase(2385): Error inserting group=demo 
E/SQLiteDatabase(2385): android.database.sqlite.SQLiteException: near "group": syntax error (code 1): , while compiling: INSERT INTO groups(group) VALUES (?) 
LOG(2385): Inserting record... 
LOG(2385): mGroupName = demo 
LOG(2385): long id = -1 

DBAdapter.java

public static final String KEY_ID = "id"; 
public static final String KEY_GROUP_NAME = "group"; 
public static final String TAG = "DBAdapter"; 
public static final String DATABASE_NAME = "GroupsDB"; 
public static final String DATABASE_TABLE = "groups"; 
public static final int DATABASE_VERSION = 1; 
private static final String DATABASE_CREATE = "create table if not exists groups (id integer primary key autoincrement, group VARCHAR not null);"; 

。 。 。

//---insert a record into the database 
public long insertRecord(String group) { 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_GROUP_NAME, group); 
    return db.insert(DATABASE_TABLE, null, initialValues); 
} 

MainActivity.java

EditText groupNameText = (EditText) findViewById(R.id.groupNameEditText); 
String mGroupname = groupNameText.getText().toString(); 

...

   try { 
        String destPath = "/data/data/" + getPackageName() + "/databases/GroupsDB"; 
        File f = new File(destPath); 
        if(!f.exists()) { 
         CopyDB(getBaseContext().getAssets().open("mydb"), 
         new FileOutputStream(destPath)); 
        } 
       }catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       }catch (IOException e) { 
        e.printStackTrace(); 
       } 

       DBAdapter db = new DBAdapter(this); 

       //try hard coding the record here, if unable to insertRecord for any reason it will return -1 
       db.open(); 
       long id = db.insertRecord(mGroupname); 
       Log.i(TAG, "Inserting record..."); 
       Log.i(TAG, "mGroupName = " + mGroupname); 
       Log.i(TAG, "long id = " + id); 
       db.close(); 

回答

5

組是一個SQLite關鍵字。請參閱:http://www.sqlite.org/lang_keywords.html

更改所有的「小組」,像「mgroup首項」

+1

我浪費了大約小時試圖找出什麼地方錯了我的表名「組」 :)誰還會想到。 – Hades200621

+0

贊@ Hades200621 ...我已經浪費了一個多小時而不知道發生了什麼......謝謝@KlassAktKreations! – Seishin

相關問題