如何使用 Content Provider 和 Asynctask 将数据保存到 SQLite
How to save data to SQLite using Content provider and Asynctask
我在使用 ContentProvider
和 Asynctask
将数据保存到数据库 SQLite
时遇到问题,这是我的代码
BtnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String JudulSesi = String.valueOf(judulSesi.getText());
String Description = String.valueOf(Ket.getText());
ContentValues contentValues = new ContentValues();
contentValues.put(LocalDBHandler.FIELD_SESSION_TYPE, sessionType);
contentValues.put(LocalDBHandler.FIELD_SESSION_NAME, JudulSesi);
contentValues.put(LocalDBHandler.FIELD_SESSION_DESC, Description);
contentValues.put(LocalDBHandler.FIELD_SESSION_TIME,Date.toString());
contentValues.put(LocalDBHandler.FIELD_ELAPSED_TIME, dataTimeElapsed );
contentValues.put(LocalDBHandler.FIELD_ARRAYPOINT,stringPoint);
contentValues.put(LocalDBHandler.FIELD_DISTANCE, dataJarak);
contentValues.put(LocalDBHandler.FIELD_SPEED, speed);
contentValues.put(LocalDBHandler.FIELD_HEART_RATE, heartRate);
contentValues.put(LocalDBHandler.FIELD_CALLORIES, callorie);
SaveToDatabase savetoDB = new SaveToDatabase();
savetoDB.execute(contentValues);
Toast.makeText(SaveSession.this, "You Click Save Button", Toast.LENGTH_SHORT).show();
}
});
private class SaveToDatabase extends AsyncTask<ContentValues,Void,Void>{
@Override
protected Void doInBackground(ContentValues... contentValues) {
getContentResolver().insert(Uri.parse(LocalDBHandler.DATABASE_TABLE),contentValues[0]);
return null;
}
}
当我 运行 我的程序时,它关闭了,这是 logcat 结果
12-26 02:21:43.236 8436-9787/com.armand17.runandride E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #5 Process: com.armand17.runandride, PID: 8436 java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask.done(AsyncTask.java:309)
atjava.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalArgumentException: Unknown URL run_and_ride
at android.content.ContentResolver.insert(ContentResolver.java:1227)
at com.armand17.runandride.SaveSession$SaveToDatabase.doInBackground(SaveSession.java:143)
at com.armand17.runandride.SaveSession$SaveToDatabase.doInBackground(SaveSession.java:140)
at android.os.AsyncTask.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
说是我的Asynctask出错了,但是不知道错在哪里
问题出在这里:
Caused by: java.lang.IllegalArgumentException: Unknown URL run_and_ride
android.content.ContentResolver.insert(ContentResolver.java:1227)
您的其中一个名字 (run_and_ride
) 无效。检查数据库和 LocalDBHandler
中的名称,并根据 this.
检查清单
我在使用 ContentProvider
和 Asynctask
将数据保存到数据库 SQLite
时遇到问题,这是我的代码
BtnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String JudulSesi = String.valueOf(judulSesi.getText());
String Description = String.valueOf(Ket.getText());
ContentValues contentValues = new ContentValues();
contentValues.put(LocalDBHandler.FIELD_SESSION_TYPE, sessionType);
contentValues.put(LocalDBHandler.FIELD_SESSION_NAME, JudulSesi);
contentValues.put(LocalDBHandler.FIELD_SESSION_DESC, Description);
contentValues.put(LocalDBHandler.FIELD_SESSION_TIME,Date.toString());
contentValues.put(LocalDBHandler.FIELD_ELAPSED_TIME, dataTimeElapsed );
contentValues.put(LocalDBHandler.FIELD_ARRAYPOINT,stringPoint);
contentValues.put(LocalDBHandler.FIELD_DISTANCE, dataJarak);
contentValues.put(LocalDBHandler.FIELD_SPEED, speed);
contentValues.put(LocalDBHandler.FIELD_HEART_RATE, heartRate);
contentValues.put(LocalDBHandler.FIELD_CALLORIES, callorie);
SaveToDatabase savetoDB = new SaveToDatabase();
savetoDB.execute(contentValues);
Toast.makeText(SaveSession.this, "You Click Save Button", Toast.LENGTH_SHORT).show();
}
});
private class SaveToDatabase extends AsyncTask<ContentValues,Void,Void>{
@Override
protected Void doInBackground(ContentValues... contentValues) {
getContentResolver().insert(Uri.parse(LocalDBHandler.DATABASE_TABLE),contentValues[0]);
return null;
}
}
当我 运行 我的程序时,它关闭了,这是 logcat 结果
12-26 02:21:43.236 8436-9787/com.armand17.runandride E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #5 Process: com.armand17.runandride, PID: 8436 java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask.done(AsyncTask.java:309)
atjava.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalArgumentException: Unknown URL run_and_ride
at android.content.ContentResolver.insert(ContentResolver.java:1227)
at com.armand17.runandride.SaveSession$SaveToDatabase.doInBackground(SaveSession.java:143)
at com.armand17.runandride.SaveSession$SaveToDatabase.doInBackground(SaveSession.java:140)
at android.os.AsyncTask.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
说是我的Asynctask出错了,但是不知道错在哪里
问题出在这里:
Caused by: java.lang.IllegalArgumentException: Unknown URL run_and_ride
android.content.ContentResolver.insert(ContentResolver.java:1227)
您的其中一个名字 (run_and_ride
) 无效。检查数据库和 LocalDBHandler
中的名称,并根据 this.