簡體   English   中英

插入記錄時出現Android SQLite錯誤

[英]Android SQLite errors while inserting records

我嘗試了很多事情,並搜索了SO和Google,但這是一個奇怪的錯誤。 當我單擊在數據庫中創建(插入)新級別的按鈕時發生錯誤。 Logcat如下:

http://pokit.org/get/?564ecab747237335f72006e8e3d5d633.jpg

還有更多問題,但這是相同的錯誤。

這是執行插入操作的代碼。 我正在使用SQLiteAssetHelper。

    public void createLevel(Level lev){


    ContentValues values = new ContentValues();
    if(lev.getGameMode()=="SinglePlayer")
    {
        LevelSinglePlayer level=(LevelSinglePlayer)lev;
        values.put(GAME_MODE_COLUMN, level.getGameMode());
        values.put(DIFFICULTY_COLUMN, level.getDifficulty());
        values.put(SINGLE_PLAYER_MODE_COLUMN, level.getSinglePlayerMode());
        values.putNull(TIME_CHALLENGE_MODE_COLUMN);
        values.put(POINTS_COLUMN, level.getPoints());
        values.put(LIVES_COLUMN, level.getLives());
        values.putNull(TIME_COLUMN);
        values.put(SUFFIX_COLUMN, level.getSuffix());
        values.put(SUFFIX_WORDS_COUNT_COLUMN, level.getSuffixWordsCount());
        db.insert(LEVELS_TABLE, null, values);
        Log.w("INSERT_NEW_LEVEL", "SUCCESSFUL INSERT");
    }
    else if(lev.getGameMode()=="TimeChallenge")
    {
        LevelTimeChallenge level= (LevelTimeChallenge)lev;
        values.put(GAME_MODE_COLUMN, level.getGameMode());
        values.put(DIFFICULTY_COLUMN, level.getDifficulty());
        values.putNull(SINGLE_PLAYER_MODE_COLUMN);
        values.put(TIME_CHALLENGE_MODE_COLUMN, level.getTimeChallengeMode());
        values.put(POINTS_COLUMN, level.getPoints());
        values.put(LIVES_COLUMN, level.getLives());
        values.put(TIME_COLUMN, level.getTime());
        values.put(SUFFIX_COLUMN, level.getSuffix());
        values.put(SUFFIX_WORDS_COUNT_COLUMN, level.getSuffixWordsCount());
        db.insert(LEVELS_TABLE, null, values);
        Log.w("INSERT_NEW_LEVEL", "SUCCESSFUL INSERT");

    }   
}

我有三個表,由以下語句創建:

CREATE TABLE IF NOT EXISTS words(_id INTEGER PRIMARY KEY, word TEXT, tezina INTEGER)
CREATE TABLE IF NOT EXISTS levels(_id INTEGER PRIMARY KEY, modIgre TEXT NOT NULL,  tezina INTEGER NOT NULL, modSingle TEXT, modTime TEXT, targetpoints INTEGER, lives   INTEGER, nastavak TEXT, brojRijeciNastavak INTEGER, locked BOOLEAN, earnedpoints INTEGER, kaladonts INTEGER, req2stars INTEGER, req3stars INTEGER)
CREATE TABLE IF NOT EXISTS highscores(_id INTEGER PRIMARY KEY, player TEXT, points INTEGER)

我可以快速發布任何需要的信息。

編輯:Java consts

//konstante(nazivi tabela)
private static final String GAME_MODE_COLUMN = "modIgre";//mod igre - single, time
private static final String DIFFICULTY_COLUMN = "tezina";//tezina rijeci na levelu
private static final String SINGLE_PLAYER_MODE_COLUMN = "modSingle";//mod single playera
private static final String TIME_CHALLENGE_MODE_COLUMN = "modTime";//mod time challenga
private static final String POINTS_COLUMN = "points";
private static final String LIVES_COLUMN = "lives";//zivoti
private static final String TIME_COLUMN = "";//koliko vrijeme?
private static final String SUFFIX_COLUMN = "nastavak";//koji nastavak?
private static final String SUFFIX_WORDS_COUNT_COLUMN = "brojRijeciNastavak";//koliko 
private static final String ID_COLUMN = "_id";
private static final String TARGET_POINTS_COLUMN = "targetpoints";
private static final String LOCKED_COLUMN = "locked";
private static final String KALADONTS_COLUMN = "kaladonts";
private static final String TWO_STARS_COLUMN = "req2stars";
private static final String THREE_STARS_COLUMN = "req3stars";
private static final String EARNED_POINTS_COLUMN = "earnedpoints";
private static final String LEVELS_TABLE = "levels";

您的查詢中有多余的' '或您忘記在查詢中放入第一個字段,因此正確的查詢是:

INSERT into levels(modIgre,modTime,modSingle,brojRijeciNastavak,nastavak,tezina,lives,points)Values(?,?,?,?,?,?,?,?)

您的主鍵似乎為空,並且值也是如此。

INSERT into levels(,modIgre,modTime,modSingle,brojRijeciNastavak,nastavak,tezina,lives,points)Values(?,?,?,?,?,?,?,?)

這是一個問題,因為您是通過,開始查詢的。

您的TIME_COLUMN是一個空字符串,導致創建了無效的SQL:

private static final String TIME_COLUMN = "";//koliko vrijeme?

您可以將其替換為實際的列名。 在您的CREATE TABLE沒有看到合適的列,因此有可能應該完全刪除put(TIME_COLUMN)調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM