0

我不断收到此错误:

“表 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";
}
4

2 回答 2

1

也许您已经编辑了数据库onCreate但没有让它重新运行?尝试卸载/安装应用程序,或更新database_version到=2。

于 2013-05-22T20:47:27.363 回答
1

您不符合插入的要求

public long insert (String table, String nullColumnHack, ContentValues values)

在 API 级别 1 中添加了将行插入数据库的便捷方法。

参数 table 将行插入到表中 nullColumnHack 可选;可能为空。SQL 不允许插入一个完全空的行而不命名至少一个列名。如果您提供的值为空,则表示不知道列名并且无法插入空行。如果未设置为 null,则 nullColumnHack 参数提供可空列名称的名称,以便在您的值为空的情况下显式插入 NULL。values 此映射包含行的初始列值。键应该是列名,值应该是列值 返回新插入行的行 ID,如果发生错误,则返回 -1

你能试着做吗:

sb.insert(table_name, null, valuesToInsert);

于 2013-05-22T20:12:31.123 回答