Android 在SQLite中创建表时出错
我的SQL代码有什么问题?当我运行时,应用程序崩溃了。我已经搜索了很长一段时间,但仍然无法找出问题所在Android 在SQLite中创建表时出错,android,sqlite,Android,Sqlite,我的SQL代码有什么问题?当我运行时,应用程序崩溃了。我已经搜索了很长一段时间,但仍然无法找出问题所在 db.execSQL("create table "+TABLE_WORKDETAILS +"(ID INTEGER PRIMARY KEY , Project TEXT, WorkDescription TEXT, Per Text, TimeIn DATETIME, TimeOut DATETIME,TotalHours DATETIME, Twf_id INTEGER, FO
db.execSQL("create table "+TABLE_WORKDETAILS +"(ID INTEGER PRIMARY KEY , Project TEXT, WorkDescription TEXT, Per Text, TimeIn DATETIME,
TimeOut DATETIME,TotalHours DATETIME, Twf_id INTEGER, FOREIGN KEY(Twf_id) REFERENCES "+TABLE_WORKFORCE+"(ID1),TableInfo_id INTEGER, FOREIGN KEY(TableInfo_id) REFERENCES "+TABLE_INFO+"(ID))");
错误日志cat
Process: com.example.project.project, PID: 2055
android.database.sqlite.SQLiteException: near "TableInfo_id": syntax error (code 1): , while compiling: create table WorkDetails(ID INTEGER PRIMARY KEY , Project TEXT, WorkDescription TEXT, Per Text, TimeIn DATETIME, TimeOut DATETIME,TotalHours DATETIME, Twf_id INTEGER, FOREIGN KEY(Twf_id) REFERENCES WorkForce(ID1),TableInfo_id INTEGER, FOREIGN KEY(TableInfo_id) REFERENCES Information(ID))
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
在Sqlite表定义中,所有列定义都必须放在键定义之前,就像在查询中一样,它们混杂在一起。试试这个:
CREATE table WorkDetails(ID INTEGER PRIMARY KEY ,
Project TEXT, WorkDescription TEXT, Per Text,
TimeIn DATETIME, TimeOut DATETIME,TotalHours DATETIME,TableInfo_id INTEGER,
Twf_id INTEGER, FOREIGN KEY(Twf_id) REFERENCES WorkForce(ID1),
FOREIGN KEY(TableInfo_id) REFERENCES Information(ID))
有一个很酷的图表,其中直观地说明了CREATETABLE语句必须是怎样的
因此,如您所见,表约束
必须位于列def
s之后。因此,现在可以将所有外键和主键定义放在语句的底部