我的数据库出现此错误:
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);
}
答案 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";
试试这个