000gjk 2024-04-22 00:59 采纳率: 83.3%
浏览 2

Android查询数据库显示no such colum

遇到问题报错如图,首先排除了database version,除了2其他都不行。然后是列名也没问题m_id是没问题的,实在找不出原因来,大家帮忙看一下谢谢

img


dbutil:

img

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-22 00:59
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的错误信息,看起来在执行LoginDao.LoginM()方法时,发生了SQLiteException,提示没有找到名为m_id的列。这通常意味着在您的数据库表结构中并没有定义这个字段。

    让我们从数据库创建的代码开始检查。您提供了用于创建manager表的SQL语句,但是存在一些语法错误。以下是修复后的创建表的代码:

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 建立管理员表
        db.execSQL("PRAGMA foreign_keys = false");
        db.execSQL("CREATE TABLE manager (\n" +
                "m_id VARCHAR(20) PRIMARY KEY,\n" +
                "m_pwd VARCHAR(20)\n" +
                ")");
        db.execSQL("INSERT INTO manager VALUES ('1', '1');");
        db.execSQL("INSERT INTO manager VALUES ('2', '2');");
        db.execSQL("PRAGMA foreign_keys = true");
    }
    

    注意,我将varchar(20)primary key更正为VARCHAR(20) PRIMARY KEY,并移除了多余的换行符。确保在您的项目中使用的代码与上面的代码一致。

    接下来,我们需要确认在调用LoginDao.LoginM()方法时,查询语句是否正确引用了m_id。由于没有提供完整的LoginDao>LoginM()方法的代码,这里假设它是类似这样的:

    @Override
    public boolean LoginM(String mid) {
        String selectQuery = "SELECT * FROM manager WHERE m_id=?";
        Cursor cursor = db.rawQuery(selectQuery, new String[]{mid});
        ...
    }
    

    这里的selectQuery应该已经正确地指定了m_id列。

    如果以上两个部分都没有问题,那么可能的问题在于数据库版本管理。确保当应用升级时,onUpgrade()方法会正确地删除旧表并重新创建新表,以适应新的数据库结构:

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (oldVersion < newVersion) {
            db.execSQL("DROP TABLE IF EXISTS manager");
            onCreate(db);
        }
    }
    

    如果问题仍然存在,请检查您的LoginDao类中的LoginM()方法实现,确保它在正确的情况下被调用,并且传递给它的参数mid是有效的。

    如果还有疑问或遇到其他问题,请随时告诉我,我会尽力协助解决。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月22日

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算