首页 > 解决方案 > 我真的不明白出了什么问题

问题描述

内部创建:

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)

如何解决?

标签: 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);

推荐阅读