1
我無法使用此查詢獲取數據。它工作正常,我嘗試通過SQLManager直接在表上執行它。這裏是我的代碼: 在DatabaseAdapter類:在Android中使用Join Query
protected Cursor fetchCustomerInfo() {
String Query = "SELECT "
+ DatabaseConstant.PICKUP_CUSTOMER_DETAIL_TABLE+"."+DatabaseConstant.CUSTOMER_NAME
+ ", " + DatabaseConstant.PICKUP_CUSTOMER_DETAIL_TABLE+"."+DatabaseConstant.CUSTOMER_CONTACT
+ ", " + DatabaseConstant.PICKUP_CUSTOMER_DETAIL_TABLE+"."+DatabaseConstant.CUSTOMER_ADDRESS
+ ", " + DatabaseConstant.PICKUP_CUSTOMER_DETAIL_TABLE+"."+DatabaseConstant.CUSTOMER_EMAIL
+ ", " + DatabaseConstant.PICKUP_CUSTOMER_DETAIL_TABLE+"."+DatabaseConstant.PICKUP_PRIORITY_ID
+ ", " + DatabaseConstant.PICKUP_ITEM_DETAIL_TABLE+"."+DatabaseConstant.ITEM_TYPE
+ ", " + DatabaseConstant.PICKUP_ITEM_DETAIL_TABLE+"."+DatabaseConstant.ITEM_TYPE_ID
+ ", " + DatabaseConstant.PICKUP_ITEM_DETAIL_TABLE+"."+DatabaseConstant.ITEM_SERIAL
+ ", " + DatabaseConstant.PICKUP_ITEM_DETAIL_TABLE+"."+DatabaseConstant.PICKUPITEM_ID
+ " FROM " + DatabaseConstant.PICKUP_CUSTOMER_DETAIL_TABLE
+ " INNER JOIN " + DatabaseConstant.PICKUP_ITEM_DETAIL_TABLE
+ " ON " + DatabaseConstant.PICKUP_CUSTOMER_DETAIL_TABLE+"."+DatabaseConstant.CUSTOMER_ACCODE
+ " = "+ DatabaseConstant.PICKUP_ITEM_DETAIL_TABLE+"."+DatabaseConstant.CUSTOMER_ACCODE;
Log.i("Join Customer and item", Query);
return database.rawQuery(Query, null);
}
在DatabaseController類:
public ArrayList<CustomerInfo> fetchCustomerInfo(Context context) {
DatabaseAdapter dbAdapter = null;
ArrayList<CustomerInfo> model = new ArrayList<CustomerInfo>();
Cursor cursor = null;
try {
dbAdapter = new DatabaseAdapter(context).open();
cursor = dbAdapter.fetchCustomerInfo();
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
String name = cursor.getString(cursor
.getColumnIndex(DatabaseConstant.CUSTOMER_NAME));
String contactNumber = cursor.getString(cursor
.getColumnIndex(DatabaseConstant.CUSTOMER_CONTACT));
String customerAddress = cursor.getString(cursor
.getColumnIndex(DatabaseConstant.CUSTOMER_ADDRESS));
String customerEmail = cursor.getString(cursor
.getColumnIndex(DatabaseConstant.CUSTOMER_EMAIL));
int pickupPriorityId = cursor.getInt(cursor
.getColumnIndex(DatabaseConstant.PICKUP_PRIORITY_ID));
String itemType = cursor.getString(cursor
.getColumnIndex(DatabaseConstant.ITEM_TYPE));
String itemSerial = cursor.getString(cursor
.getColumnIndex(DatabaseConstant.ITEM_SERIAL));
int itemTypeId = cursor.getInt(cursor
.getColumnIndex(DatabaseConstant.ITEM_TYPE_ID));
int pickupItemId = cursor.getInt(cursor
.getColumnIndex(DatabaseConstant.PICKUPITEM_ID));
int customerAcc = cursor.getInt(cursor
.getColumnIndex(DatabaseConstant.CUSTOMER_ACCODE));
CustomerInfo customer = new CustomerInfo(name, contactNumber, customerAddress, customerEmail, pickupPriorityId, itemType, itemSerial, itemTypeId, pickupItemId, customerAcc);
model.add(customer);
cursor.moveToNext();
}
}
cursor.close();
dbAdapter.close();
} catch (Exception e) {
try {
cursor.close();
dbAdapter.close();
} catch (Exception e2) {
}
}
return model;
}
,並通過調用它:
allCustomerArraylist = dbController.fetchCustomerInfo(rootView.getContext());
顯示錯誤:
Failed to read row 0, column -1 from a CursorWindow which has 3 rows, 9 columns.
貼上的你當你打從你的應用程序此查詢的日誌。 – Dev
SQLManager中的結果列名稱是什麼? –
當我運行它通過sqlmanager它給出了所需的答案。但是這裏的數組列表是空白的 – user3740085