android.database.sqlite.SQLiteException:near“Details”:语法错误(代码1):

时间:2015-03-25 13:35:01

标签: android sqlite

我的数据库出现此错误:
android.database.sqlite.SQLiteException:near“Details”:语法错误(代码1): 导致错误的代码行在onCreate方法中 我想知道它是否有点我想念的东西? 我插入了逗号,同样的错误即将出现。

DatabaseHandler.java

public class DatabaseHandler extends SQLiteOpenHelper {
//DATABASE VERSION
private static final int DATABASE_VERSION = 1;
//DATABASE NAME
private static final String DATABASE_NAME = "Appdatabase";
//TABLE NAMES
private static final String TABLE_REGISTER = "Register Details";
private static final String TABLE_PRODUCT = "Product Details";
//COMMON COLUMN NAMES
private static final String KEY_USERID = "UserID's";
private static final String KEY_PRODUCTID = "ProductID's";
//REGISTER COLUMN NAMES
private static final String KEY_USERNAME = "Username";
private static final String KEY_PASSWORD = "Password";
private static final String KEY_AGE = "Age";
private static final String KEY_GENDER = "Gender";
private static final String KEY_HEIGHT = "Height";
private static final String KEY_STRTWEIGHT = "StartWeight";
private static final String KEY_CURRWEIGHT = "CurrentWeight";
private static final String KEY_WEIGHTCHANGE = "WeightChange";
private static final String KEY_MONCAL = "MondayCalories";
private static final String KEY_TUESCAL = "TuesdayCalories";
private static final String KEY_WEDCAL = "WednesdayCalories";
private static final String KEY_THURCAL = "ThursdayCalories";
private static final String KEY_FRICAL = "FridayCalories";
private static final String KEY_SATCAL = "SaturdayCalories";
private static final String KEY_SUNCAL = "SundayCalories";
private static final String KEY_WEEKLYBUDGET = "WeeklyBudget";

//PRODUCT COLUMN NAMES
private static final String KEY_ITEMNAME = "ItemName";
private static final String KEY_ITEMPRICE = "ItemPrice";
private static final String KEY_ITEMCALORIE = "ItemCalories";


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


public void onCreate(SQLiteDatabase db){
    String CREATE_PRODUCT_TABLE = "CREATE TABLE " + TABLE_PRODUCT + "(" +
            KEY_PRODUCTID + " INTEGER PRIMARY KEY, " +
            KEY_ITEMNAME + " TEXT, " +
            KEY_ITEMPRICE + " DOUBLE, " +
            KEY_ITEMCALORIE + " DOUBLE " + ")";

    String CREATE_REGISTERDETAILS_TABLE = "CREATE TABLE " + TABLE_REGISTER + " ( "+ KEY_USERID + " INTEGER PRIMARY KEY , " + KEY_USERNAME + " TEXT, " +
            KEY_PASSWORD + " TEXT, " +
            KEY_GENDER + " TEXT, " +
            KEY_HEIGHT + " DOUBLE, " +
            KEY_CURRWEIGHT + " DOUBLE, " +
            KEY_STRTWEIGHT + " DOUBLE, " +
            KEY_WEIGHTCHANGE + " DOUBLE, " +
            KEY_AGE + " INTEGER, " +
            KEY_MONCAL + " DOUBLE, " +
            KEY_TUESCAL + " DOUBLE, " +
            KEY_WEDCAL + " DOUBLE, " +
            KEY_THURCAL + " DOUBLE, " +
            KEY_FRICAL + " DOUBLE, " +
            KEY_SATCAL + " DOUBLE, " +
            KEY_SUNCAL + " DOUBLE, " +
            KEY_WEEKLYBUDGET + " DOUBLE );";
    //CREATING REQUIRED TABLES
    db.execSQL(CREATE_REGISTERDETAILS_TABLE);
    db.execSQL(CREATE_PRODUCT_TABLE);

}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
    //ON UPGRADE DROP THE OLDER TABLES
    db.execSQL("DROP TABLE IF EXISTS" + TABLE_REGISTER);
    db.execSQL("DROP TABLE IF EXISTS" + TABLE_PRODUCT);
    onCreate(db);
}

2 个答案:

答案 0 :(得分:0)

SQLITE具有以下类型:

TEXT NUMERIC INTEGER REAL NONE

我猜你正在寻找REAL而不是Double。

另一个问题是不应包含空格的TableName。

答案 1 :(得分:0)

  

表名不得包含空格。

从表名中删除空格

private static final String TABLE_REGISTER = "Register_Details";
private static final String TABLE_PRODUCT = "Product_Details";

试试这个