java - 获取此异常 : "android.database.sqlite.SQLiteException: no such column: _id: , while compiling" when I have an _id column

标签 java android sqlite

每当我运行我的应用程序时,我都会遇到此异常。不知道是什么原因造成的。以下是一些相关背景信息:

  • 我的全局属性中有这个:

    public static final String KEY_ID = "_id";
    
  • 接下来我有一个字符串变量来设置我的数据库列:

    private static final String DATABASE_CREATE =
                "create table sdCards (_id integer primary key autoincrement, "
                + "arg0 text not null, "
                + "arg1 integer not null, "
                        + "arg2 integer not null, "
                        + "arg3 integer not null, "
                        + "arg4 integer not null, "
                        + "arg5 integer not null);";
    
  • 最后,我创建数据库如下:

    public void onCreate(SQLiteDatabase db) {
         db.execSQL(DATABASE_CREATE);
    }
    

不太确定发生了什么。我显然有一个 _id 列!任何帮助将不胜感激!

编辑:这是我的 logcat

E/AndroidRuntime(24036): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mydomain.packagename/com.mydomain.packagename.MainClass}: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, arg0, arg1, arg2, arg3, arg4, arg5 FROM table_name
E/AndroidRuntime(24036):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1741)
E/AndroidRuntime(24036):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1757)
E/AndroidRuntime(24036):    at android.app.ActivityThread.access$1500(ActivityThread.java:123)
E/AndroidRuntime(24036):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:998)
E/AndroidRuntime(24036):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(24036):    at android.os.Looper.loop(Looper.java:126)
E/AndroidRuntime(24036):    at android.app.ActivityThread.main(ActivityThread.java:4002)
E/AndroidRuntime(24036):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(24036):    at java.lang.reflect.Method.invoke(Method.java:491)
E/AndroidRuntime(24036):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
E/AndroidRuntime(24036):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
E/AndroidRuntime(24036):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(24036): Caused by: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, sdName, writes, modifications, moved, deletes FROM sdCards
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:147)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:368)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:131)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:95)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1534)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1414)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1370)
E/AndroidRuntime(24036):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1450)
E/AndroidRuntime(24036):    at com.mydomain.packagename.DbAdapter.fetchAllSd(DbAdapter.java:131)
E/AndroidRuntime(24036):    at com.mydomain.packagename.MainClass.fillData(SDBenchmark.java:70)
E/AndroidRuntime(24036):    at com.mydomain.packagename.MainClass.onCreate(SDBenchmark.java:28)
E/AndroidRuntime(24036):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
E/AndroidRuntime(24036):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1705)
E/AndroidRuntime(24036):    ... 11 more

最佳答案

尝试删除您的数据库(可能通过卸载您的应用程序),然后尝试运行该应用程序。这将重新创建您的数据库。一种可能性是您已经创建了表,但某处的选择失败,因为 _id 列从未创建过。

关于java - 获取此异常 : "android.database.sqlite.SQLiteException: no such column: _id: , while compiling" when I have an _id column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170336/

相关文章:

Android sqlite,限制数据库中的行数

java - 有什么好的安卓开发ORM工具吗?

Java集合GC

java - 将具有 Runnable 的处理程序升级为 lambda 表达式

android - 是否可以在 ScrollView 中有一个 ViewPager?

android - 无法在手机上运行应用程序进行测试 : Adb connection Error:An existing connection was forcibly closed by the remote host

c# - 删除sqlite中的where in子句

java - android studio 中 facebook api 的 doInBackground() 错误

java - 显示贝壳排序过程

Java学习使用SWT gridlayout和griddata