我一直收到这个错误:
“table keyTable没有名为number的列”
对于Android来说还是一个新手,所以不知道为什么会发生这种情况,有人能发现错误吗?
这是我的数据库类:
public class KeyDatabase extends SQLiteOpenHelper {
private static final String database_name = "KeyDatabase.db";
private static final int database_version = 1;
KeyDatabase (Context context){
super(context,database_name,null,database_version);
}
@Override
public void onCreate (SQLiteDatabase db){
db.execSQL("CREATE TABLE " + KeyTableClass.table_name
+ "(" + KeyTableClass.id + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KeyTableClass.number + " TEXT, "
+ KeyTableClass.key + " TEXT);");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("DROP TABLE IF EXISTS " + KeyTableClass.table_name);
onCreate(db);
}
public long InsertKey (String number, String key){
ContentValues valuesToInsert = new ContentValues();
valuesToInsert.put(KeyTableClass.number, number);
valuesToInsert.put(KeyTableClass.key, key);
SQLiteDatabase sd = getWritableDatabase();
long result = sd.insert(KeyTableClass.table_name, KeyTableClass.number, valuesToInsert);
return result;
}
这是我班上的课程:
public class KeyTableClass {
//The name of the table
public static final String table_name = "keyTable";
//The columns of the table
public static String id = "id";
public static String number = "number";
public static String key = "key";
}
答案 0 :(得分:1)
您不适合requirements for the insertion:
public long insert (String table, String nullColumnHack, ContentValues values)
在API级别1中添加了用于在行中插入行的便捷方法 数据库中。
参数表将表插入行 nullColumnHack可选;可能是null。 SQL不允许插入 完全空行而不命名至少一个列名。如果你的 提供的值为空,没有列名称和空行 无法插入。如果未设置为null,则为nullColumnHack参数 提供可为空的列名称,以显式插入NULL 在您的值为空的情况下。此地图包含的值 行的初始列值。键应该是列 名称和值列值返回新的行ID 插入行,如果发生错误,则返回-1
你可以试着这样做:
sb.insert(table_name, null, valuesToInsert);
答案 1 :(得分:0)
也许你已经编辑了数据库onCreate
但是没有让它重新运行?
尝试卸载/安装应用,或将database_version
更新为= 2。