2013-06-03 38 views
0

我想另一個表添加到我的數據庫,但應用程序崩潰,我得到這個錯誤:兩個表中SQLite數據庫

E/SQLiteLog(1025): (1) near "select": syntax error 

的代碼是工作時,我只有一個表,我用創建第二個表相同的方法,執行該代碼後不久發生崩潰:

db.execSQL(DATABASE_STATS_CREATE); 

這裏是我的類:

BetsDbAdapter.java

public class BetsDbAdapter { 

    /*-----------------BetList---------------------*/ 
    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_MATCH = "match"; 
    public static final String KEY_TIME = "time"; 
    public static final String KEY_BOOKMAKERS = "bookmakers"; 
    public static final String KEY_ODDS1 = "odds1"; 

    /*-----------------Statistik---------------------*/ 
    public static final String KEY_SID = "_sid"; 
    public static final String KEY_SMATCH = "smatch"; 
    public static final String KEY_SELECTION = "select"; 
    public static final String KEY_BETAMOUNT = "betamount"; 
    public static final String KEY_BODDS = "boods"; 

    private static final String TAG = "BetsDbAdapter"; 
    private DatabaseHelper mDbHelper; 
    private SQLiteDatabase mDb; 

    private static final String DATABASE_NAME = "Bets.db"; 
    private static final String SQLITE_TABLE = "BetTable"; 
    private static final String SQLITE_STATS_TABLE = "Statistik"; 

    private static final int DATABASE_VERSION = 1; 

    private final Context mCtx; 

    private static final String DATABASE_CREATE = "CREATE TABLE if not exists " 
      + SQLITE_TABLE + " (" + KEY_ROWID 
      + " integer PRIMARY KEY autoincrement," + KEY_MATCH + "," 
      + KEY_TIME + "," + KEY_BOOKMAKERS + "," + KEY_ODDS1 + "," 
      + " UNIQUE (" + KEY_MATCH + "));"; 

    private static final String DATABASE_STATS_CREATE = "CREATE TABLE if not exists " 
      + SQLITE_STATS_TABLE + " (" + KEY_SID 
      + " integer PRIMARY KEY autoincrement," + KEY_SMATCH + "," 
      + KEY_SELECTION + "," + KEY_BETAMOUNT + "," + KEY_BODDS + "," 
      + " UNIQUE (" + KEY_SMATCH + "));"; 

    private static class DatabaseHelper extends SQLiteOpenHelper { 

     DatabaseHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      Log.w(TAG, DATABASE_CREATE); 
      db.execSQL(DATABASE_CREATE); 
      db.execSQL(DATABASE_STATS_CREATE); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
        + newVersion + ", which will destroy all old data");    
      db.execSQL("DROP TABLE IF EXISTS " + SQLITE_TABLE); 
      db.execSQL("DROP TABLE IF EXISTS " + SQLITE_STATS_TABLE); 
      onCreate(db); 
     } 
    } 

    public BetsDbAdapter(Context ctx) { 
     this.mCtx = ctx; 
     mDbHelper = new DatabaseHelper(mCtx); 
    } 

    public BetsDbAdapter open() throws SQLException { 
     //mDbHelper = new DatabaseHelper(mCtx); 
     mDb = mDbHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close() { 
     if (mDbHelper != null) { 
      mDbHelper.close(); 
     } 
    } 

    public long createBets(String match, String time, String bookmakers, 
      String odds1) { 

     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_MATCH, match); 
     initialValues.put(KEY_TIME, time); 
     initialValues.put(KEY_BOOKMAKERS, bookmakers); 
     initialValues.put(KEY_ODDS1, odds1); 

     return mDb.insert(SQLITE_TABLE, null, initialValues); 
    } 

    public long statBets(String smatch, String select, String betamount, 
      String bodds) { 

     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_SMATCH, smatch); 
     initialValues.put(KEY_SELECTION, select); 
     initialValues.put(KEY_BETAMOUNT, betamount); 
     initialValues.put(KEY_BODDS, bodds); 

     return mDb.insert(SQLITE_STATS_TABLE, null, initialValues); 
    } 

回答

2

可能是一個壞主意來命名一列「中選擇」

public static final String KEY_SELECTION = "select"; 

請嘗試更改的東西,是不是SQL保留字,E。 G。

public static final String KEY_SELECTION = "selekt"; 

貧民窟,我知道,但它應該工作。

+0

哦,我不知道,修好了,謝謝! – Yoshidk

0

SELECTkeyword

在SQL命令中使用它,你必須引用它:

... + ",\"" + KEY_SELECTION + "\"," + ...