猿问

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

我有一个奇怪的问题,我一生都无法解决。

sqlite 数据库很简单。两行分别是 String 和 INTEGER。

该表只有一条记录:

http://img4.mukewang.com/636232ae0001ee9104650040.jpg

  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());

        }

    }


翻过高山走不出你
浏览 110回答 1
1回答

12345678_0001

你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());    }}从设备上卸载应用程序,以便删除并重新运行数据库。
随时随地看视频慕课网APP

相关分类

Java
我要回答