0
SQLite的查詢我在做什麼 ::使用的AsyncTask線程來執行android系統
- 我試圖運行在的AsyncTask一個SQLite查詢(因爲它執行 在一個單獨的線程中的交易)。
- 我收到日誌錯誤,如圖
- 當我調試,我發現在
getDataFromSqlite();
代碼生成錯誤
問題 ::
- 在哪裏,我錯了
- 我該如何糾正自己
代碼段 ::
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
txtBufTime.setText(sendBufTime);
txtBufDistance.setText(sendDistance);
txtOnlinePrice.setText(sendOnlinePrice);
txtReservePrice.setText(sendReservePrice);
txtBuffetDesc.setText(sendDescription);
txtBufType.setText(sendBufType);
setRating(sendRating);
new LongOperation().execute();
}
private class LongOperation extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
getDataFromSqlite();
return null;
}
@Override
protected void onPostExecute(Void result) {
Toast.makeText(getActivity(), "DOne", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
public void getDataFromSqlite() {
///
Cursor cursor = null;
DatabaseHandler mHelper = new DatabaseHandler(getActivity().getApplicationContext());
SQLiteDatabase db = mHelper.getWritableDatabase();
String queryString="select menu_type_id , cuisine_type_name , item_name" +
" from buffets " +
"where buff_off_id = " + sendBuffetId;
Log.d("queryString", queryString.toString());
try {
cursor = db.rawQuery(queryString, null);
} catch (Exception e) {
e.printStackTrace();
} finally {
cursor.close();
}
}
登錄 ::
**05-15 13:41:17.547: E/AndroidRuntime(2743): FATAL EXCEPTION: AsyncTask #5
05-15 13:41:17.547: E/AndroidRuntime(2743): java.lang.RuntimeException: An error occured while executing doInBackground()
05-15 13:41:17.547: E/AndroidRuntime(2743): at android.os.AsyncTask$3.done(AsyncTask.java:278)
05-15 13:41:17.547: E/AndroidRuntime(2743): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
05-15 13:41:17.547: E/AndroidRuntime(2743): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
05-15 13:41:17.547: E/AndroidRuntime(2743): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
05-15 13:41:17.547: E/AndroidRuntime(2743): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-15 13:41:17.547: E/AndroidRuntime(2743): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
05-15 13:41:17.547: E/AndroidRuntime(2743): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-15 13:41:17.547: E/AndroidRuntime(2743): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-15 13:41:17.547: E/AndroidRuntime(2743): at java.lang.Thread.run(Thread.java:856)
05-15 13:41:17.547: E/AndroidRuntime(2743): Caused by: java.lang.NullPointerException
05-15 13:41:17.547: E/AndroidRuntime(2743): at com.findmybuffet.fragments.FragBuffetContents.getDataFromSqlite(FragBuffetContents.java:154)
05-15 13:41:17.547: E/AndroidRuntime(2743): at com.findmybuffet.fragments.FragBuffetContents$LongOperation.doInBackground(FragBuffetContents.java:120)
05-15 13:41:17.547: E/AndroidRuntime(2743): at com.findmybuffet.fragments.FragBuffetContents$LongOperation.doInBackground(FragBuffetContents.java:1)
05-15 13:41:17.547: E/AndroidRuntime(2743): at android.os.AsyncTask$2.call(AsyncTask.java:264)
05-15 13:41:17.547: E/AndroidRuntime(2743): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)**
您的錯誤是'getDataFromSqlite'方法(來自logcat:'getDataFromSqlite(FragBuffetContents.java:154)'')中第154行的NullPointerException。哪條線? – Fllo
@Fllo .... 154行是cursor.close(); – Devrath
@CasperSkyless,你的sql查詢必須有錯誤,檢查日誌 – gerbit