我正在實現一個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
這應該工作 –