有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    尝试在CREATE TABLE之后添加空格字符

    private static final String CREATE_TABLE_INFO = "CREATE TABLE " + DbContract.TABLE_NAME +"(ID INTEGER PRIMARY KEY AUTOINCREMENT," + DbContract.INCOMING_NUMBER + ",TEXT);";