E / SQLiteLog:(1)表keyTable没有名为number的列

时间:2013-05-22 20:09:34

标签: java android database

我一直收到这个错误:

  

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

2 个答案:

答案 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。