我正在实现一个 SQLite 数据库,但我无法弄清楚为什么某些列值为空。这是我写给我的 SQLiteDatabase(db) 的地方。ArrayList 肯定有车辆列表,每辆车肯定有正确的值(车辆 ID、地址、城市、州......)。数据库内的表也有我构造的列(我也检查了这个)。
出于某种原因,当我进行诸如 cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_CITY)) 之类的调用时,它会变为空,但是当我对 KEY_LAT 进行相同的调用时,它可以工作。(车辆 ID、纬度和经度工作,但其他人没有)..
public static void addVehicle(ArrayList<Vehicle> aList) {
Database.openWritable();
ContentValues values = new ContentValues();
for(Vehicle vehicle : aList){
values.put(KEY_VEHICLE_ID, vehicle.getvehicleID());
values.put(KEY_ADDRESS, vehicle.getaddress());
values.put(KEY_CITY, vehicle.getcity());
values.put(KEY_STATE, vehicle.getstate());
values.put(KEY_LAT, vehicle.getLat());
values.put(KEY_LON, vehicle.getLon());
db.insert(TABLE_VEHICLE, null, values);
}
}
附加信息/问题这个循环发生了数百次,我觉得它应该只发生在我拥有的行数,即 14 行(我在数据库中有 14 辆车)。这可能会影响什么?但我怀疑不是。那么为什么会这样呢?:
String query = "SELECT * FROM " + DatabaseHandler.TABLE_VEHICLE;
Cursor cursor = Database.listOfVehiclesDesired(query);
String lat = "";
String lon = "";
String title = "";
String snippet = "";
if(cursor.moveToFirst()){
do {
lat = (cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_LAT)));
lon = (cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_LON)));
title = cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_VEHICLE_ID)) + " " + cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_VEHICLE_NAME));
snippet = "City:" + cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_CITY)) + ", State: " + cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_STATE));
addMarkers(new LatLng(lat, lon), true, R.drawable.cap, title, snippet);
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
多余的(?)背景信息:我正在使用静态类来访问 SQLiteDatabase,此外,获取列索引等的代码也在 AsyncTask 中。