java - 调用.query时出现android.database.sqlite.SQLiteException
问题描述
我只在实时版本上遇到这个问题,在模拟器上测试时一切正常。这是我的代码
public void onCreate(SQLiteDatabase db) {
String SQL_CREATE_NUTRI_TABLE = "CREATE TABLE " + TABLE_NAME_USER_DATA + "(" +
_ID_USER_DATA + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_USER_NAME + " TEXT, " +
COLUMN_USER_GENDER + " TEXT, " +
COLUMN_USER_HEIGHT + " TEXT, " +
COLUMN_USER_WEIGHT + " TEXT, " +
COLUMN_USER_WEIGHT_DATE + " TEXT, " +
COLUMN_USER_MUSCLE_MASS + " TEXT, " +
COLUMN_USER_MUSCLE_MASS_DATE + " TEXT, " +
COLUMN_USER_FAT_MASS + " TEXT, " +
COLUMN_USER_FAT_MASS_DATE + " TEXT, " +
COLUMN_USER_ACTIVITY + " TEXT, " +
COLUMN_USER_GOAL + " TEXT, " +
COLUMN_USER_PHONE + " TEXT, " +
COLUMN_USER_AGE_MILLIS + " TEXT, " +
COLUMN_USER_EMAIL + " TEXT, " +
TOKEN + " TEXT, " +
TOKEN_TIME + " TEXT, " +
COLUMN_USER_PASSWORD + " TEXT);";
db.execSQL(SQL_CREATE_NUTRI_TABLE);
}
错误在 db.execSQL 行中
我已经查看了我需要的专栏,它们都在那里,因为我在其他答案中看到有些人忘记添加所有这些
编辑
这是我得到的错误
Caused by: android.database.sqlite.SQLiteException:
at android.database.sqlite.SQLiteConnection.nativePrepareStatement (Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:986)
at android.database.sqlite.SQLiteConnection.prepare (SQLiteConnection.java:593)
at android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:590)
at android.database.sqlite.SQLiteProgram.<init> (SQLiteProgram.java:61)
at android.database.sqlite.SQLiteStatement.<init> (SQLiteStatement.java:33)
at android.database.sqlite.SQLiteDatabase.executeSql (SQLiteDatabase.java:1812)
at android.database.sqlite.SQLiteDatabase.execSQL (SQLiteDatabase.java:1740)
at com.app.khali.nutriplan.userData.userDataHelper.onCreate (userDataHelper.java:64)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:412)
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase (SQLiteOpenHelper.java:341)
at com.app.khali.nutriplan.userData.userDataProvider.query (userDataProvider.java:54)
at com.app.khali.nutriplan.startUpPage.onCreate (startUpPage.java:121)
at android.app.Activity.performCreate (Activity.java:7967)
at android.app.Activity.performCreate (Activity.java:7956)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3487)
解决方案
如果表已经存在,请将您的查询更改为不创建表。
像
CREATE TABLE IF NOT EXISTS + TABLE_NAME_USER_DATA + "(" +
并检查。
推荐阅读
- javascript - 下载在 firefox & IE & Edge 中不起作用(扩展问题)
- html - Outlook 中的 HTML 电子邮件预览(最新版本)
- cloudify - 如何使用 Cloudify REST 插件发送八位字节流内容类型
- karate - 运行性能测试时注入配置文件出现问题
- pdf - Microsoft Edge 不使用 src="data:application/pdf;..." 在 iFrame 中显示 PDF
- java - 需要来自对象数组的列表中的映射
- java - 如何在没有反射的情况下正确实现持久 CookieStore?
- c# - 子弹反射(弹跳)未按预期工作
- sas - 在满足某些要求时保持观察
- spring-boot - 即使 DB 已关闭,也启动 Spring-Boot/EclipseLink 应用程序,并在 DB 可用时重新连接