0

SQLiteデータベースに単一の行をハードコーディングしようとしています。これが機能するかどうか、または何か別のことをする必要があるかどうかを知りたいですか?コンテンツ値を使用して記述されたコードが非常に多いため、コンテンツ値を引き続き使用したいと思います。

public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE " + DB_TBL + " (" +
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
                KEY_LEVEL + " INTEGER NOT NULL, " + 
                KEY_HEALTH + " INTEGER NOT NULL, " +
                KEY_NAME + " TEXT NOT NULL, " +
                KEY_CRIT + " INTEGER NOT NULL, " +
                KEY_CRIT_RANGE + " INTEGER NOT NULL, " +
                KEY_CRIT_INC + " INTEGER NOT NULL, " +
                KEY_HIT_RANGE + " INTEGER NOT NULL, " +
                KEY_HIT_INC + " INTEGER NOT NULL, " +
                KEY_CHAR_IMG + " INTEGER NOT NULL, " +
                KEY_TOTAL_XP + " INTEGER NOT NULL, " +
                KEY_XP + " INTEGER NOT NULL, " +
                KEY_XP_NEEDED + " INTEGER NOT NULL, " +
                KEY_COINS + " INTEGER NOT NULL, " + 
                KEY_SMALL_POTS + " INTEGER NOT NULL, " +
                KEY_LARGE_POTS + " INTEGER NOT NULL)"
            );
        DbHelper helper = new DbHelper();//I have to put a context in the argument 
        SQLiteDatabase database = helper.getWritableDatabase();//but I don't know what to put or if I'm doing it right
         values = new ContentValues();
            values.put(KEY_NAME, "User1");
            values.put( KEY_LEVEL, 1);
            values.put(KEY_HEALTH, 10);
            values.put(KEY_CRIT, 5);
            values.put(KEY_CRIT_RANGE, 2);
            values.put(KEY_CRIT_INC, 2);
            values.put(KEY_HIT_RANGE, 2);
            values.put(KEY_HIT_INC, 0);
            values.put(KEY_TOTAL_XP, 0);
            values.put(KEY_XP, 0);
            values.put(KEY_XP_NEEDED, 25);
            values.put(KEY_COINS, 5);
            values.put(KEY_SMALL_POTS, 0);
            values.put(KEY_LARGE_POTS, 0);
            values.put(KEY_CHAR_IMG, 1);
            database.insert(DB_TBL,  null, values);

    }

logcat

01-04 12:36:06.403: W/dalvikvm(18454): threadid=11: thread exiting with uncaught exception (group=0x40aa3228)
01-04 12:36:06.473: E/AndroidRuntime(18454): FATAL EXCEPTION: UpdateThread
01-04 12:36:06.473: E/AndroidRuntime(18454): java.lang.StackOverflowError
01-04 12:36:06.473: E/AndroidRuntime(18454):    at android.database.sqlite.SQLiteOpenHelper.<init>(SQLiteOpenHelper.java:77)
01-04 12:36:06.473: E/AndroidRuntime(18454):    at com.tanukiproductions.battleforchristmas.SQLiteTable$DbHelper.<init>(SQLiteTable.java:45)
01-04 12:36:06.473: E/AndroidRuntime(18454):    at com.tanukiproductions.battleforchristmas.SQLiteTable$DbHelper.<init>(SQLiteTable.java:46)
4

2 に答える 2

1

試してみませんか?動作するはずです。

于 2013-01-04T16:55:37.570 に答える
1

これが機能するかどうか、または何か別のことをする必要があるかどうかを知りたいですか?

ourDatabase参照している限り、それは機能しますdb。しかし、それをテストする最良の方法は、自分で試すことです。

注意として、あなたは整数をテキスト列に入れています。これは型アフィニティのためにSQLiteのエラーではありませんが、実際には意味がなく、これらの列を数値で並べ替えようとすると問題が発生する可能性があります。それらをとして宣言する必要がありますINTEGER

于 2013-01-04T16:55:42.083 に答える