JavaSQLite异常:安卓。数据库sqlite。SQLiteException
我想创建一个应用程序,显示所有电话号码的接收电话。 使用sqlite将这些数字保存在表中。 这些是我上的课
logcat
11-09 01:18:04.002 3027-3027/nischayvaish.com.test1 E/AndroidRuntime: FATAL EXCEPTION: main
Process: nischayvaish.com.test1, PID: 3027
java.lang.RuntimeException: Unable to start activity ComponentInfo{nischayvaish.com.test1/nischayvaish.com.test1.MainActivity}: 安卓.database.sqlite.SQLiteException: near "TABLEincoming_info": syntax error (code 1): , while compiling: CREATE TABLEincoming_info(ID INTEGER PRIMARY KEY AUTOINCREMENT,incoming_number,TEXT)
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2696)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2757)
at 安卓.app.ActivityThread.-wrap12(ActivityThread.java)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1504)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:163)
at 安卓.app.ActivityThread.main(ActivityThread.java:6237)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: 安卓.database.sqlite.SQLiteException: near "TABLEincoming_info": syntax error (code 1): , while compiling: CREATE TABLEincoming_info(ID INTEGER PRIMARY KEY AUTOINCREMENT,incoming_number,TEXT)
at 安卓.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at 安卓.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at 安卓.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at 安卓.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at 安卓.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at 安卓.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at 安卓.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1675)
at 安卓.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1606)
at nischayvaish.com.test1.DbHelper.onCreate(DbHelper.java:28)
at 安卓.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251)
at 安卓.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at nischayvaish.com.test1.MainActivity.readFromDb(MainActivity.java:52)
at nischayvaish.com.test1.MainActivity.onCreate(MainActivity.java:39)
at 安卓.app.Activity.performCreate(Activity.java:6847)
at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2649)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2757)
at 安卓.app.ActivityThread.-wrap12(ActivityThread.java)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1504)
at 安卓.os.Handler.dispatchMessage(Handler.java:102)
at 安卓.os.Looper.loop(Looper.java:163)
at 安卓.app.ActivityThread.main(ActivityThread.java:6237)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:767)
teInit.java:877)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:767)
我已经为表名和入局号码创建了单独的类
DbContract.class
DbHelper。班级
public class DbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "numberDb";
private static final int DATABASE_VERSION = 1;
private static final String CREATE_TABLE_INFO = "CREATE TABLE" + DbContract.TABLE_NAME +"(ID INTEGER PRIMARY KEY AUTOINCREMENT," + DbContract.INCOMING_NUMBER + ",TEXT);";
private static final String DROP_TABLE = "drop table if exists" + DbContract.TABLE_NAME;
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_INFO);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE);
onCreate(db);
}
public void saveNumber(String number, SQLiteDatabase database) {
ContentValues contentValues = new ContentValues();
contentValues.put(DbContract.INCOMING_NUMBER, number);
database.insert(DbContract.TABLE_NAME, null, contentValues);
}
public Cursor readNumber(SQLiteDatabase database) {
String[] projection = {"id", DbContract.INCOMING_NUMBER};
return (database.query(DbContract.TABLE_NAME, projection, null, null, null, null, null));
}
DbContract。班级
public class DbContract {
public static final String TABLE_NAME = "incoming_info";
public static final String INCOMING_NUMBER = "incoming_number";
public static final String UPDATE_UI_FILTER = "nischayvaish.com.test1.UPDATE_UI";
}
要么错误出现在DbContract中。类或DbHelper。阶级
Caused by: 安卓.database.sqlite.SQLiteException: near "TABLEincoming_info": syntax error (code 1): , while compiling: CREATE TABLEincoming_info(ID INTEGER PRIMARY KEY AUTOINCREMENT,incoming_number,TEXT)
# 1 楼答案
尝试在
CREATE TABLE
之后添加空格字符private static final String CREATE_TABLE_INFO = "CREATE TABLE " + DbContract.TABLE_NAME +"(ID INTEGER PRIMARY KEY AUTOINCREMENT," + DbContract.INCOMING_NUMBER + ",TEXT);";