sql - 我真的不明白出了什么问题
问题描述
内部创建:
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 TEXT,QWRONGANSWER TEXT)在 android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 在 android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
的 android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method ) 在 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)
在 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(Native Method) 在 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)
如何解决?
解决方案
对特殊字符使用方括号:& 是一个特殊字符,因此方括号会对您有所帮助
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);
推荐阅读
- javascript - 如何在 React JS 中使用复选框和映射创建动态数组?
- java - 为什么我必须输入“字符串中的第一个唯一字符”问题?
- excel - 替换代码行中的特定元素
- c# - C#异步等待不起作用winforms ui冻结
- javascript - 移动 Safari 图像捕获的替代方案
- algorithm - Dijkstra 的双向实现
- java - android中有什么方法可以让我在android中同时播放两个音频?一个在我的应用程序上,一个在另一个后台应用程序上
- gramex - 401 无效令牌/handler.xsrf_token 与 cookie 不匹配
- names - 对同一个表或数组使用不同名称的原因是什么?
- iframe - 如何接受带有赛普拉斯的 iframe 触发的窗口确认