Я импортировал данные из файла CSV в таблицу SQLite.Когда я пытаюсь получить запись, используя определенный столбец, он возвращает 0 записей.Принимая во внимание, что данные присутствуют в таблице.Схема таблицы:
public static final class Vehicle2Wheel implements BaseColumns{
public static final String TABLE_NAME="Vehicle2Wheel";
public static final String VEH_ID = "VEH_ID";
public static final String VEH_REG_NUM = "VEH_REG_NUM";
public static final String VEH_ENGINE_NO = "VEH_ENGINE_NO";
public static final String VEH_CHASIS_NO= "VEH_CHASIS_NO";
public static final String VEH_MAKE= "VEH_MAKE";
public static final String VEH_CC = "VEH_CC";
public static final String VEH_COLOR = "VEH_COLOR";
public static final String VEH_MODEL = "VEH_MODEL";
public static final String OWN_NAME = "OWN_NAME";
public static final String OWN_FNAME = "OWN_FNAME";
public static final String CNIC = "OWN_CNIC";
public static final String OWN_ADDRESS = "OWN_ADDRESS";
}
Создание таблицы:
String tableVeh2Wheel = "CREATE TABLE "+ Schema.Vehicle2Wheel.TABLE_NAME+
" ("+ Schema.Vehicle2Wheel.VEH_ID+" TEXT,"
+ Schema.Vehicle2Wheel.VEH_REG_NUM+" TEXT,"
+ Schema.Vehicle2Wheel.VEH_ENGINE_NO+" TEXT,"
+ Schema.Vehicle2Wheel.VEH_CHASIS_NO+" TEXT,"
+ Schema.Vehicle2Wheel.VEH_MAKE+" TEXT,"
+ Schema.Vehicle2Wheel.VEH_CC+" TEXT,"
+ Schema.Vehicle2Wheel.VEH_COLOR+" TEXT,"
+ Schema.Vehicle2Wheel.VEH_MODEL+ " TEXT,"
+ Schema.Vehicle2Wheel.OWN_NAME+" TEXT,"
+ Schema.Vehicle2Wheel.OWN_FNAME+" TEXT,"
+ Schema.Vehicle2Wheel.CNIC+" TEXT,"
+ Schema.Vehicle2Wheel.OWN_ADDRESS+" TEXT"
+ ");";
Код для импорта данных из файла CSV:
public void setData(String filePath, String tableName, int colCount, String[] colNames){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("delete from " + tableName);
try {
FileReader file = new FileReader(filePath);
BufferedReader buffer = new BufferedReader(file);
ContentValues contentValues = new ContentValues();
String line = "";
db.beginTransaction();
while ((line = buffer.readLine()) != null) {
String[] str = line.split(",",colCount);
int length = str.length;
for (int i = 0; i < length; i++) {
contentValues.put(colNames[i], str[i].toString());
}
db.insert(tableName, null, contentValues);
}
db.setTransactionSuccessful();
db.endTransaction();
} catch (IOException e) {
if (db.inTransaction())
db.endTransaction();
Toast.makeText(context,""+e.getMessage().toString(), Toast.LENGTH_SHORT).show();
}
if (db.inTransaction())
db.endTransaction();
}
Этот код (Код 1) возвращает нулевой счетчик курсора: Код 1:
database = new Database(getApplicationContext());
SQLiteDatabase db = database.getWritableDatabase();
Cursor cursor = null;
String vehId = "";
try {
String value = "KIL-3396";
cursor = db.rawQuery("SELECT VEH_ID FROM Vehicle2Wheel WHERE VEH_REG_NUM=?", new String[] {value + ""});
if(cursor.getCount() > 0) {
cursor.moveToFirst();
vehId = cursor.getString(cursor.getColumnIndex("VEH_ID"));
Log.v(TAG,"Vehicle ID is "+vehId);
}else
Log.v(TAG,"no record, size of cursor is "+cursor.getCount());
}finally {
cursor.close();
}
Вывод этого кода показан на рисунке p1 ![picture p1](https://i.stack.imgur.com/9LUyF.png)
Принимая во внимание, что этот (ниже) код возвращает номер рег "KIL-3396".Это означает, что эта запись присутствует в таблице, но почему она не извлекается с использованием кода (т. Е. Кода 1).Почему рег номер "KIL-3396" не совпадает?Данные не извлекаются с использованием какого-либо столбца, кроме VEH_ID.
String query = "SELECT * FROM Vehicle2Wheel LIMIT 5;";
Cursor mcursor = db.rawQuery(query, null);
if (mcursor.getCount()>0) {
mcursor.moveToFirst();
while (mcursor.moveToNext()) {
for (int i = 0; i < mcursor.getColumnCount(); i++) {
Log.v(TAG, "Data is " + mcursor.getString(i));
}
}
}
Вывод этого кода показан на рисунке p2 ![picture p2](https://i.stack.imgur.com/ypZ9j.png)