当前位置: 首页 > 知识库问答 >
问题:

Android:Android。数据库sqlite。SQLiteException:没有这样的列

微生高谊
2023-03-14
Cursor cursor = db.query(UserTable, null, 
                "UserName=?", new String[] {username}, 
                null, null, AccessedDate);

当我试图打开我的活动时,我得到了这个“未发现列”异常。错误指向上面的查询行

JAVAlang.RuntimeException:无法启动活动组件信息{com.text.sample/com.text.sample.usercontext.RecentsActivity}:android。数据库sqlite。SQLiteException:没有这样的列:UserName(代码1):,编译时:SELECT*FROM Patient WHERE UserName=?在android上按访问日期订购。应用程序。活动线程。android上的performLaunchActivity(ActivityThread.java:2180)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2230)。应用程序。活动线程。在Android上获得600美元(ActivityThread.java:141)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1234)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:99)。操作系统。活套。android上的loop(Looper.java:137)。应用程序。活动线程。java上的main(ActivityThread.java:5041)。朗,反思一下。方法java上的Invokenactive(本机方法)。朗,反思一下。方法在com上调用(Method.java:511)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(ZygoteInit.java:793)。Android内部的操作系统。合子体。dalvik的main(ZygoteInit.java:560)。系统原生艺术。主要(本机方法)原因:android。数据库sqlite。SQLiteException:没有这样的列:UserName(代码1):,编译时:SELECT*FROM Patient WHERE UserName=?在android上按访问日期订购。数据库sqlite。SQLiteConnection。android上的nativePrepareStatement(本机方法)。数据库sqlite。SQLiteConnection。android上的acquirePreparedStatement(SQLiteConnection.java:882)。数据库sqlite。SQLiteConnection。在android上准备(SQLiteConnection.java:493)。数据库sqlite。SQLiteSession。在android上准备(SQLiteSession.java:588)。数据库sqlite。Sqlite程序。(SQLiteProgram.java:58)在android上。数据库sqlite。SQLiteQuery。(SQLiteQuery.java:37)在android上。数据库sqlite。SQLiteDirectCursorDriver。android上的查询(SQLiteDirectCursorDriver.java:44)。数据库sqlite。SQLITE数据库。android上的rawQueryWithFactory(SQLiteDatabase.java:1314)。数据库sqlite。SQLITE数据库。android上的queryWithFactory(SQLiteDatabase.java:1161)。数据库sqlite。SQLITE数据库。android上的查询(SQLiteDatabase.java:1032)。数据库sqlite。SQLITE数据库。在com上查询(SQLiteDatabase.java:1200)。文本样品常见的达尔。在com上获取所有患者(DAL.java:104)。文本样品用户上下文。近期活动。android上的onCreate(RecentsActivity.java:38)。应用程序。活动android上的performCreate(Activity.java:5104)。应用程序。仪器。android上的callActivityOnCreate(Instrumentation.java:1080)。应用程序。活动线程。performLaunchActivity(ActivityThread.java:2144)。。。还有11个

共有2个答案

祁增
2023-03-14

我想把列命名为常数应该会有帮助。。这是最常见的错误之一,所以与其记住每个列的名称,为什么不将constants类或columns类作为静态最终成员,然后访问它呢

它将是这样的东西:

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

这将给你更多的控制权,并消除愚蠢的错误。

仉宪
2023-03-14

一个可能的原因是"我确信列在那里",但"没有这样的列"返回,将是您的数据库以前有另一种格式正在安装,您更新它没有增加您的db版本,并使用onUpgradt更新您的数据库。

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

 类似资料:
  • 大家好,我有一些问题与我的SQLite数据库在我的java程序。我试图从几个表中检索数据,但它说我的表不存在。我已经用数据库浏览器检查过了,它肯定在那里,所以我不确定我做错了什么。这是我收到的错误: [SQLITE_ERROR]SQL错误或缺少数据库(没有这样的表:staff_clocked_in.clock_in_time) 我确信我的表存在,并且两个表中都有数据,这里是我的数据库浏览器的截图。

  • 我有一个数据库保存在我的应用程序资产文件夹,我复制数据库使用下面的代码时,应用程序第一次打开。 上面的代码运行时没有问题,但是当您尝试查询数据库时,您会得到一个SQLite:没有这样的表异常。 这个问题只发生在Android P中,所有早期版本的Android都能正常工作。 这是一个已知的问题与Android P或有什么改变?

  • 这是我的系统分析和设计课程中的一个项目,所以我对Java相当陌生,只是学了一门基础课程,而数据库,从来没有学过。这是我第一次在这个网站上发帖,所以如果代码格式有点乱,我很抱歉。 下面是我的类加载DB的代码。 到数据库的连接工作正常,但当我试图输入用户名和密码时,我得到了错误。这是我的登录屏幕的代码。我向您保证表Employeeinfo确实存在于ScheduleSystem.sqlite中。 这是我

  • 然而,敬虔加上知足的心便是大利了,因为我们没有带什么到世上来,也不能带什么去,只要有衣有食,就当知足。但那些想要发财的人,就陷在迷惑、落在网罗和许多无知有害的私欲里,叫人沉在败坏和灭亡中。贪财是万恶之根。有人贪恋钱财,就被引诱离了真道,用许多愁苦把自己刺透了。(1 TIMOTHY 6:6-10) SQLite数据库 SQLite是一个小型的关系型数据库,它最大的特点在于不需要服务器、零配置。前面的

  • 你能帮我解决缺栏的问题吗?在我看来,我做的每件事都是对的,但我得到的错误是,某一列有问题。 错误 E/SQLiteLog:(1)没有这样的列:Stezenie D/AndroidRuntime:关闭VM E/AndroidRuntime:致命异常:主进程:com。实例apkadlapacjenta,PID:11261 java。lang.RuntimeException:无法启动活动组件信息{co

  • 问题内容: 我正在使用Django-CMS的Django项目中构建一个相当简单的应用程序,即研究项目。(这是我对项目/应用程序的首次尝试。)它的主要目的是存储各种知识资产(例如,研究人员撰写的文章,书籍等)。 问题是,当我将浏览器指向/ research /时,出现一条错误,提示表’research_journal’不存在(“ no such table”)。 我正在使用带有sqlite3数据库的