请帮助我,我不明白。我将创建数据库,但它有错误。请在第二天晚上结束示例项目。请帮助我
码
public class FriendsDBHelper extends SQLiteOpenHelper {
public static int TABLE_VERSION = 1;
public static String TABLE_NAME ="table_f";
public static String TABLE_KEY_ID = "id";
public static String TABLE_KEY_FNAME = "fname";
public static String TABLE_KEY_LNAME = "lname";
public static String TABLE_KEY_NNAME = "nickname";
public static String TABLE_CREATE_SQL = "CREATE TABLE "+TABLE_NAME+" ("+
""+TABLE_KEY_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
""+TABLE_KEY_FNAME+"TEXT(20), "+
""+TABLE_KEY_LNAME+"TEXT(20), "+
""+TABLE_KEY_NNAME+"TEXT(20), "+
") ";
//Constructor
public FriendsDBHelper(Context context) {
super(context, TABLE_NAME, null, TABLE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE "+TABLE_NAME);
onCreate(db);
Log.i("Friends DB Helper","Table upgrade form "+ oldVersion +" to "+newVersion);
}
}
答案 0 :(得分:3)
这里需要列名和类型之间的空格:
""+TABLE_KEY_FNAME+"TEXT(20), "+
""+TABLE_KEY_LNAME+"TEXT(20), "+
""+TABLE_KEY_NNAME+"TEXT(20), "+
要修复其他语法错误,请删除最后一列规范后的,
。
更好:
""+TABLE_KEY_FNAME+" TEXT(20), "+
""+TABLE_KEY_LNAME+" TEXT(20), "+
""+TABLE_KEY_NNAME+" TEXT(20) "+
对于列类型,parens在语法上是有效的(但在语义上被忽略),但对于列名称则没有。
答案 1 :(得分:0)
在create table命令的末尾有一个额外的“,”。
""+TABLE_KEY_NNAME+"TEXT(20), "+
删除它。
同样""+TABLE_KEY_FNAME+"TEXT(20), "+
它将评估为""+TABLE_KEY_FNAMETEXT(20), "+
,即字段和类型之间没有空格,因此请添加如下空格:
""+TABLE_KEY_FNAME+" TEXT(20), "+
类似的更改也适用于其他字段定义。