2012-04-02 68 views
0

当我尝试创建一个表中的第一次,我总是收到此错误信息:的Android创建表错误

sqlite的返回:错误码= 1,味精= AUTOINCREMENT只允许 上INTEGER PRIMARY KEY

我的代码如下所示:

// debuggin标识 私有静态最后弦乐TAG = DatabaseOpenHandler.class.getSimpleName();

// name and verison of the database 
private static final String DATABASE_NAME = "OpenConfApp"; 
private static final int DATABASE_VERSION = 1; 

// name and attributes of the table notes 
public static final String TABLE_NAME_NOTES = "notes"; 
public static final String _NOTE_ID = "_noteId"; 
public static final String NOTE_CONFERENCE = "conferenceId"; 
public static final String NOTE_DATE = "dateInMillis"; 
public static final String NOTE_TEXT = "noteText"; 

// create table notes 
public static final String TABLE_NOTES_CREATE = "CREATE TABLE " 
     + TABLE_NAME_NOTES + " (" + _NOTE_ID 
     + "INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
     + " INTEGER, " + NOTE_DATE + " INTEGER, " + NOTE_TEXT 
     + " INTEGER);"; 

// drop table notes 
public static final String TABLE_NOTES_DROP = "DROP TABLE IF EXIST " 
     + TABLE_NAME_NOTES; 

public DatabaseOpenHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    Log.d(TAG, "onCreate called"); 
    db.execSQL(TABLE_NOTES_CREATE); 
} 

对不起,我是Android编程新手。

回答

1

你的代码是正确的只有你的第一个整数statement.Write之前错过了空间这样的:

public static final String TABLE_NOTES_CREATE = "CREATE TABLE " 
    + TABLE_NAME_NOTES + " (" + _NOTE_ID 
    + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
    + " INTEGER, " + NOTE_DATE + " INTEGER, " + NOTE_TEXT 
    + " INTEGER);"; 
+0

你为什么要重复我吗? -_- – Joe 2012-04-02 12:25:39

+0

@ sebbl.sche丑闻。我是第一个给出这个答案的。 – Joe 2012-04-02 12:54:31

+0

sry亲爱的,但我真的没有看到你的答案,因为我的网速慢。真的是sry。 – Dhruvisha 2012-04-02 13:11:59

0

整数主键不需要AUTOINCREMENT,它的语义已经包含在“主键”中,请参阅here

1
+ "INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 

你错过由于打字错误 那边一片空白......

+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
0

这是一个问题,有

NOTE_ID和INTEGER PRIMARY KEY AUTOINCREMENT

之间没有空格
public static final String TABLE_NOTES_CREATE = "CREATE TABLE " 
     + TABLE_NAME_NOTES + " (" + _NOTE_ID 
     + "INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
     + " INTEGER, " + NOTE_DATE + " INTEGER, " + NOTE_TEXT 
     + " INTEGER);"; 

你应该给他们之间的空间

public static final String TABLE_NOTES_CREATE = "CREATE TABLE " 
     + TABLE_NAME_NOTES + " (" + _NOTE_ID 
     + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
     + " INTEGER, " + NOTE_DATE + " INTEGER, " + NOTE_TEXT 
     + " INTEGER);";