我正在实现一个SQLite数据库,我找不出为什么某些列值为空。这是我写入我的SQLiteDatabase(db)的地方。 ArrayList DEFINITELY具有车辆列表,并且每辆车肯定具有正确的值(车辆ID,地址,城市,州......)。数据库中的表格也有我构建的列(我也检查过)。获取空的SQLite数据库值
由于某种原因,当我正在做一个像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();
}
多余背景INFROMATION:我使用一个静态类访问SQLiteDatabase,另外,得到列索引和这样的这个代码是在的AsyncTask。
创建表时,可以为表的每列设置列约束'not null'。 'addVehicle()'将失败,然后插入空值。所以你可以检查这是不是问题 –
这是一个正确的说法吗? “CREATE TABLE”+ TABLE_VEHICLE +“(”+ KEY_VEHICLE_ID +“TEXT NOT NULL,”+ ...重复。我不相信它失败 – benzabill
这应该工作 –