为了账号安全,请及时绑定邮箱和手机立即绑定

Android应用程序正确读取字符串列但不是第三个INTEGER(sqlite)

Android应用程序正确读取字符串列但不是第三个INTEGER(sqlite)

翻过高山走不出你 2022-11-02 17:03:21
我有一个奇怪的问题,我一生都无法解决。sqlite 数据库很简单。两行分别是 String 和 INTEGER。该表只有一条记录:  public PubList readDatabase(String currentPostcode) {        databaseReader dbReader;        dbReader = new databaseReader(this);        try {            dbReader.updateDataBase();        } catch (IOException mIOException) {            throw new Error("Unable to update database");        }        try {            pubDatabase = dbReader.getReadableDatabase();        } catch (SQLException mSQLException) {            throw new Error("SQLException");        }        String query = "SELECT Town,PostcodeArea,NumberOfPubs FROM PubLists WHERE PostcodeArea = '" + currentPostcode.substring(0, 4) + "'";        final Cursor cursor = pubDatabase.rawQuery(query, null);        if (cursor.moveToNext()) {            currentTown.setListName(cursor.getString(cursor.getColumnIndex("Town")));            currentTown.setPostcode(cursor.getString(cursor.getColumnIndex("PostcodeArea")));            currentTown.setNumberOfPubs(cursor.getInt(cursor.getColumnIndex("NumberOfPubs")));        }        cursor.close();        return currentTown;    }通过一些调试,我可以确认两个 String 列都被正确拉出,但是 int 列应该是 23,总是返回 3,我不知道 3 来自哪里。会喜欢一些指针。编辑:按照要求,这里是将发布列表上传到数据库的代码。此代码从桌面上的 javaFX 应用程序运行。public void uploadPubList(PubList pubList){        String sql = "INSERT OR REPLACE INTO main.PubLists(Town,PostCodeArea,NumberOfPubs) VALUES(?,?,?)";        try {            Connection conn = this.connect();            for (Pub pub : pubList.getPubs()) {                PreparedStatement pstmt = conn.prepareStatement(sql);                pstmt.setString(1, pubList.getName());                pstmt.setString(2, pubList.getPostCodeArea());                pstmt.setInt(3, pubList.getPubs().size());                pstmt.executeUpdate();                insertPub(pubList, pub);            }        } catch (SQLException e) {            System.out.println(e.getMessage());        }    }
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

你uploadPubList()为什么要迭代pubList.getPubs()?

您只想插入 1 行:城镇名称、邮政编码区域和酒吧数量,对吧?

另外,这一行:


insertPub(pubList, pub);

它有什么作用?

删除for循环并保留这些:


public void uploadPubList(PubList pubList){

    String sql = "INSERT OR REPLACE INTO main.PubLists(Town,PostCodeArea,NumberOfPubs) VALUES(?,?,?)";

    try {

        Connection conn = this.connect();

        PreparedStatement pstmt = conn.prepareStatement(sql);

        pstmt.setString(1, pubList.getName());

        pstmt.setString(2, pubList.getPostCodeArea());

        pstmt.setInt(3, pubList.getPubs().size());

        pstmt.executeUpdate();

    } catch (SQLException e) {

        System.out.println(e.getMessage());

    }

}

从设备上卸载应用程序,以便删除并重新运行数据库。


查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号