我有一个奇怪的问题,我一生都无法解决。
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());
}
}
12345678_0001
相关分类