我曾尝试将数据添加到以下帮助程序类中,但我收到了“没有这样的表”错误。
如果我们使用普通的SQL查询,它就会开始工作。但是这种类型的查询不起作用。如何编写这些类型的查询,请解释一下这种语法!
static class EmpHelper extends SQLiteOpenHelper{
private static final String DATABASE_NAME = "empdatabase";
private static final String TABLE_NAME = "emptable";
private static final int DATABASE_VERSION = 2;
private static final String UID = "_id";
private static final String NAME = "Name";
private static final String PASSWORD = "Password";
private static final String CREATE_TABLE = "CREATE TABLE" + TABLE_NAME
+ "("+UID+ " INTEGER PRIMARY KEY AUTOINCREMENT," + NAME
+ " VARCHAR(255)," + PASSWORD + "VARCHAR2(255)"+")";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS"
+ TABLE_NAME;
private Context context;
public EmpHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
Message.message(context, "constructor called");
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
try {
db.execSQL(CREATE_TABLE);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:2)
你应该改变这个
+ " VARCHAR(255)," + PASSWORD + "VARCHAR2(255)"+")";
到
+ " VARCHAR(255)," + PASSWORD + " VARCHAR2(255)"+")"; //add space after VARCHAR2(255)
更改此设置后,您必须卸载您的应用并再次安装新的apk内置
答案 1 :(得分:1)
您的CREATE TABLE
SQL存在多个语法问题,您可以在onCreate()
中捕获异常。因此,SQLiteOpenHelper
认为即使没有执行SQL,数据库创建也是成功的。
修复:
"TABLE"
和TABLE_NAME
之间添加空格。PASSWORD
和"VARCHAR"
之间添加空格。catch
。需要向调用者抛出异常。onCreate()
。(就此而言,DROP_TABLE
中也有空格。