У меня странная проблема, которую я не могу решить до конца жизни.
База данных sqlite проста.Две строки, каждая из которых является строкой, а другая - INTEGER.
![enter image description here](https://i.stack.imgur.com/WWeAi.png)
Таблица содержит только одну запись в:
![enter image description here](https://i.stack.imgur.com/ccGzb.png)
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());
}
}