В Android SQLite я пытаюсь получить некоторые сведения о клиентах, когда я в сети, сохранить их в базе данных SQLite и отображать их, когда я не в сети.
К сожалению, при этом порядок столбцов, к сожалению, испортился.
У меня есть следующая таблица, TABLE_AGEING_VALUES_ALL
:
Loan_No text primary key,
agreement_date date,
branch_name text,
loan_status text,
address1 text,
address2 text,
status_type integer,
user_id integer
Данные клиента отображаются, когда я онлайн:
Пример 1:
Loan Number: CDAGRTW1412090016
Agreement Date: 12/9/2014 12:00:00 AM
Branch Name:
Loan Status: Expired
Address 1: 9/43, MOTI BAG NAGAL FATHORI YAMUNA BRIDGE
Address 2:
К сожалению, когда я не в сети, порядок полей запутан вот так.
Пример 1:
Loan Number: CDAGRTW1412090016
Agreement Date:
Branch Name: 9/43, MOTI BAG NAGAL FATHORI YAMUNA BRIDGE
Loan Status:
Address 1: Expired
Address 2: 12/9/2014 12:00:00 AM
Я хотел бы знать, почему это вообще должно происходить вообще.
Вот мой вызов функции обновления или вставки в Java-файле фрагмента основной деятельности, который зависит от того, существует ли уже в данном случае эта строка или нет:
onResponse()
вызов функции:
if (db.selectAgeingvalues(Loan_No, status_type, user_id) == 0) {
db.insertAgeingvalues(Loan_No, agreement_date, branch_name, loan_status, address1, address2, status_type, user_id);
} else {
db.updateAgeingvalues(Loan_No, agreement_date, branch_name, loan_status, address1, address2, status_type, user_id);
}
Вот мой вызов функции select для получения сведений о клиентах из сохраненной таблицы базы данных Android SQLite, когда я не в сети:
onFailure()
вызов функции:
sqliteDB db = new sqliteDB(getActivity());
List<String> AgeingvaluesList[] = db.selectAgeingvalues("-1", user_id);
for(int i = 0; i < AgeingvaluesList[0].size(); i++)
{
Loan_No = AgeingvaluesList[0].get(i);
agreement_date = AgeingvaluesList[1].get(i);
branch_name = AgeingvaluesList[2].get(i);
loan_status = AgeingvaluesList[3].get(i);
address1 = AgeingvaluesList[4].get(i);
address2 = AgeingvaluesList[5].get(i);
status_type = AgeingvaluesList[6].get(i);
}
Вот мои вызовы функций SELECT, INSERT, UPDATE, onCreate () и onUpgrade () внутри моего объявленного sqliteDB.java
Java-файла, как показано ниже, например, такие как:
onCreate(SQLiteDatabase sqLiteDatabase)
вызов функции
для возможности создания таблицы TABLE_AGEING_VALUES_ALL
в хранимой таблице базы данных Android SQLite, если она уже не существует, или ее удаления и повторного создания, если она уже существует, на основе следующих присвоенных значений переменной sqLiteDatabase
:
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
// TODO Auto-generated method stub
sqLiteDatabase.execSQL(
"create table " + TABLE_AGEING_VALUES_ALL +
"("
+ "Loan_No text not null unique primary key,"
+ "branch_name text,"
+ "address1 text not null,"
+ "address2 text,"
+ "loan_status text not null,"
+ "agreement_date text not null,"
+ "status_type number not null,"
+ "user_id text not null"
+ ")"
);
}
onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1)
вызов функции
для возможности обновления таблицы TABLE_AGEING_VALUES_ALL
в сохраненную таблицу базы данных Android SQLite, если она уже существует или нет при обновлении мобильного приложения до более новой версии или во время удаления и повторной установки мобильного приложения до более новой версии на основе следующих присвоенных значений переменных sqLiteDatabase
, i
и i1
:
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
// TODO Auto-generated method stub
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_AGEING_VALUES_ALL);
onCreate(sqLiteDatabase);
}
insertAgeingvalues(String Loan_No, String agreement_date, String branch_name, String loan_status, String address1, String address2, String status_type, String user_id)
вызов функции
для возможности вставки строки в сохраненную таблицу базы данных Android SQLite, если она еще не существует, на основе следующих присвоенных значений переменных: Loan_No
, agreement_date
, branch_name
, loan_status
, address1
, address2
, status_type
и user_id
:
public boolean insertAgeingvalues(String Loan_No, String agreement_date, String branch_name, String loan_status, String address1, String address2, String status_type, String user_id)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("Loan_No", Loan_No);
contentValues.put("agreement_date", agreement_date);
contentValues.put("branch_name", branch_name);
contentValues.put("loan_status", loan_status);
contentValues.put("address1", address1);
contentValues.put("address2", address2);
contentValues.put("status_type", status_type);
contentValues.put("user_id", user_id);
db.insert(TABLE_AGEING_VALUES_ALL, null, contentValues);
return true;
}
updateAgeingvalues(String Loan_No, String agreement_date, String branch_name, String loan_status, String address1, String address2, String status_type, String user_id)
вызов функции:
для возможности обновления строки в сохраненной таблице базы данных Android SQLite, если она уже существует, на основе следующих присвоенных значений переменных: Loan_No
, agreement_date
, branch_name
, loan_status
, address1
, address2
, status_type
и user_id
:
public int updateAgeingvalues(String Loan_No, String agreement_date, String branch_name, String loan_status, String address1, String address2, String status_type, String user_id)
{
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("Loan_No", Loan_No);
contentValues.put("agreement_date", agreement_date);
contentValues.put("branch_name", branch_name);
contentValues.put("loan_status", loan_status);
contentValues.put("address1", address1);
contentValues.put("address2", address2);
contentValues.put("status_type", status_type);
contentValues.put("user_id", user_id);
// updating row
return db.update(TABLE_AGEING_VALUES_ALL, contentValues, "Loan_No = ? AND user_id = ?",
new String[] {Loan_No, user_id});
}
selectAgeingvalues(String Loan_No, String status_type, String user_id)
функция вызова
Таблица базы данных Android SQLite:
public int selectAgeingvalues(String Loan_No, String status_type, String user_id)
{
int count = 0;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor;
cursor = db.rawQuery("SELECT EXISTS(SELECT Loan_No FROM " + TABLE_AGEING_VALUES_ALL + " WHERE user_id = \"" + user_id + "\" AND Loan_No = \"" + Loan_No + "\" AND status_type = " + status_type + ")", null);
if (cursor.moveToFirst()) {
do {
count = Integer.parseInt(cursor.getString(0));
} while (cursor.moveToNext());
}
return count;
}
selectAgeingvalues(String status_type, String user_id)
вызов функции
, чтобы иметь возможность извлекать строку из сохраненной таблицы базы данных Android SQLite, если она уже существует или нет, на основе следующих присвоенных значений переменных status_type
и user_id
:
public List<String>[] selectAgeingvalues(String status_type, String user_id)
{
String Loan_No;
String agreement_date;
String branch_name;
String loan_status;
String address1;
String address2;
List AgeingvaluesList[] = new List[7];
for(int i = 0; i <= 6; i++) {
AgeingvaluesList[i] = new ArrayList<String>();
}
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor;
cursor = db.rawQuery("SELECT * FROM "+TABLE_AGEING_VALUES_ALL+" WHERE user_id = \""+user_id+"\" AND status_type = "+status_type, null);
if (cursor.moveToFirst()) {
do {
Loan_No = cursor.getString(0);
AgeingvaluesList[0].add(Loan_No);
agreement_date = cursor.getString(1);
AgeingvaluesList[1].add(agreement_date);
branch_name = cursor.getString(2);
AgeingvaluesList[2].add(branch_name);
loan_status = cursor.getString(3);
AgeingvaluesList[3].add(loan_status);
address1 = cursor.getString(4);
AgeingvaluesList[4].add(address1);
address2 = cursor.getString(5);
AgeingvaluesList[5].add(address2);
status_type = cursor.getString(6);
AgeingvaluesList[6].add(status_type);
} while (cursor.moveToNext());
}
return AgeingvaluesList;
}
Что я делаю достаточно неправильно?