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

挿入の要件を満たしていません:

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

データベースに行を挿入するための API レベル 1 の便利なメソッドで追加されました。

パラメータ table 行を挿入するテーブル nullColumnHack オプション。null の場合があります。SQL では、少なくとも 1 つの列名を指定せずに完全に空の行を挿入することはできません。指定した値が空の場合、列名が不明であり、空の行を挿入できません。null に設定されていない場合、nullColumnHack パラメーターは、値が空の場合に明示的に NULL を挿入するための null 許容列名の名前を提供します。値 このマップには、行の初期列値が含まれています。キーは列名で、値は列の値である必要があります 新しく挿入された行の行 ID、またはエラーが発生した場合は -1 を返します

やってみませんか:

sb.insert(table_name, null, valuesToInsert);

于 2013-05-22T20:12:31.123 に答える