首页 文章

Android:android.database.sqlite.SQLiteException:没有这样的列

提问于
浏览
1
Cursor cursor = db.query(UserTable, null, 
                "UserName=?", new String[] {username}, 
                null, null, AccessedDate);

当我试图打开我的活动时,我得到这个没有列发现的异常 . 错误指向上面的 query line .

java.lang.RuntimeException:无法启动活动ComponentInfo {com.text.sample / com.text.sample.usercontext.RecentsActivity}:android.database.sqlite.SQLiteException:no such column:UserName(code 1):, while编译:SELECT * FROM Patient WHERE UserName =?在Android.app.A活动时,在android.app.ActivityThread.perleLaunchActivity(ActivityThread.java:2130)的android.app.ActivityThread.access $ 600(ActivityThread.java:141)的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)上订购了AccessedDate android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)在android.app.Handler.dispatchMessage(Handler.java:99)android.app.Looper.loop(Looper.java:137)android.app .ActivityThread.main(ActivityThread.java:5041)位于java.lang.reflect.Method.invokeNative(Native Method),位于com.android.internal.os的java.lang.reflect.Method.invoke(Method.java:511) .ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)at dalvik.system.NativeStart.main(Native Method)引起:android.database .sqlite.SQLiteException:没有这样的列:UserName(代码1):,同时编译:SELECT * FROM Patient WHERE UserName =?在android.database.sqlite.SQL上的android.dd.slsite.SQL中的android.dd.slsite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)的android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)中的ACDEREDDate ORDER BY(SQLiteConnection.java:493) )在android.database.sqlite.SQLp上的android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) . (SQLiteProgram.java:58) . (SQLiteQuery.java:37)位于android.database.sqlite.SQLiteDatabase.ReryFactory(SQLiteDatabase.java:1314)的android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44),android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161) )位于android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032)的android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200)com.text.sample.common.DAL.getAllPatients(DAL . java:104)at com.text.sample.usercontext.RecentsActivity.onC在android.app.Anstrumentation.callActivityOnCreate(Instrumentation.java:1080)的android.app.ActivityThread.performLaunchActivity(ActivityThread.java)的android.app.Activity.performCreate(Activity.java:5104)处创建(RecentsActivity.java:38) :2144)......还有11个

2 回答

  • 1

    可能的原因是“我确定列在那里”,但是“没有这样的列”被返回,将是您的数据库以前安装了另一种格式,并且您在不增加数据库版本的情况下更新它,并使用onUpgrade更新你的数据库 .

    如果这符合你的情况,请看看这篇文章,它教你如何正确执行onUpgrade:https://stackoverflow.com/a/14579351/1131470

  • 0

    我想将列命名为常量应该有帮助..这是最常见的错误之一,所以不要记住每列的名称,为什么不将常量类或列类放在静态最终成员中然后访问它

    这将是这样的事情:

    Cursor cursor = db.query(UserTable, null, 
                UserColumn.USER_NAME + "=?", new String[] {username}, 
                null, null, UserColumn.ACCESSED_DATE);
    

    这将为您提供更多控制并消除愚蠢的错误 .

相关问题