【问题标题】:I don't really understand what is wrong我真的不明白出了什么问题
【发布时间】:2020-04-12 22:07:30
【问题描述】:

内部创建:

String createit = "create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,USERNAME TEXT,PASSWORD TEXT,RANK INTEGER,IDOFUSER LONG)";
String createit2 = "create table " + TABLE_NAMES +" (ID INTEGER PRIMARY KEY AUTOINCREMENT , USERNAME TEXT , SUBJECT TEXT , MARK INTEGER)";
String createit3 = "create table " + TABLE_NAMESS +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,SUBJECT TEXT,QTITLE TEXT,QRIGHTANSWER TEXT,QWRONGANSWER TEXT,QWRONGANSWER TEXT,QWRONGANSWER TEXT)";
String createit4 = "create table " + TABLE_NAMESSS +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,TITLE TEXT,ANSWER1 TEXT,ANSWER2 TEXT,ANSWER3 TEXT,ANSWER4 TEXT,CORRECTANSWER TEXT)";

db.execSQL(createit);
db.execSQL(createit2);
db.execSQL(createit3);
db.execSQL(createit4);

我得到这个错误:

android.database.sqlite.SQLiteException:靠近“&”:语法错误(代码1):,编译时:创建表q&a(ID INTEGER PRIMARY KEY AUTOINCREMENT,SUBJECT TEXT,QTITLE TEXT,QRIGHTANSWER TEXT,QWRONGANSWER TEXT,QWRONGANSWER文本,QWRONGANSWER 文本)
在 android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
在 android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
在 android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
在 android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
在 android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
在 android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
在 android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)
在 android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605)
在 com.example.finalproject.DatabaseHelper.onCreate(DatabaseHelper.java:55)
在 android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251)
在 android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
在 com.example.finalproject.DatabaseHelper.isuserexist(DatabaseHelper.java:249)
在 com.example.finalproject.MainActivity.onClick(MainActivity.java:37)
在 android.view.View.performClick(View.java:4780)
在 android.view.View$PerformClick.run(View.java:19866)
在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5254) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

如何解决?

【问题讨论】:

标签: sql


【解决方案1】:

对特殊字符使用方括号:& 是一个特殊字符,所以方括号会对您有所帮助

String createit = "create table [" + TABLE_NAME +"] (ID INTEGER PRIMARY KEY AUTOINCREMENT,USERNAME TEXT,PASSWORD TEXT,RANK INTEGER,IDOFUSER LONG)";
String createit2 = "create table [" + TABLE_NAMES +"] (ID INTEGER PRIMARY KEY AUTOINCREMENT , USERNAME TEXT , SUBJECT TEXT , MARK INTEGER)";
String createit3 = "create table [" + TABLE_NAMESS +"] (ID INTEGER PRIMARY KEY AUTOINCREMENT,SUBJECT TEXT,QTITLE TEXT,QRIGHTANSWER TEXT,QWRONGANSWER TEXT,QWRONGANSWER TEXT,QWRONGANSWER TEXT)";
String createit4 = "create table [" + TABLE_NAMESSS +"] (ID INTEGER PRIMARY KEY AUTOINCREMENT,TITLE TEXT,ANSWER1 TEXT,ANSWER2 TEXT,ANSWER3 TEXT,ANSWER4 TEXT,CORRECTANSWER TEXT)";

db.execSQL(createit);
db.execSQL(createit2);
db.execSQL(createit3);
db.execSQL(createit4);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多