Deb*_*tra 4 sqlite android constraints try-catch
08-02 16:26:24.750: E/Database(28841): Error inserting data
08-02 16:26:24.750: E/Database(28841): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
08-02 16:26:24.750: E/Database(28841): at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
08-02 16:26:24.750: E/Database(28841): at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
08-02 16:26:24.750: E/Database(28841): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1584)
08-02 16:26:24.750: E/Database(28841): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1428)
08-02 16:26:24.750: E/Database(28841): at com.app.android.DataOperations.insertItems(DataOperations.java:69)
08-02 16:26:24.750: E/Database(28841): at com.app.android.DownloadTask.createDatabase(DownloadTask.java:173)
08-02 16:26:24.750: E/Database(28841): at com.app.android.DownloadTask.doInBackground(DownloadTask.java:59)
08-02 16:26:24.750: E/Database(28841): at com.app.android.DownloadTask.doInBackground(DownloadTask.java:1)
08-02 16:26:24.750: E/Database(28841): at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-02 16:26:24.750: E/Database(28841): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
08-02 16:26:24.750: E/Database(28841): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
08-02 16:26:24.750: E/Database(28841): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
08-02 16:26:24.750: E/Database(28841): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
08-02 16:26:24.750: E/Database(28841): at java.lang.Thread.run(Thread.java:1019)
Run Code Online (Sandbox Code Playgroud)
以上是我的LogCat报告.我想要做的是插入数据.看了logcat之后我发现它是一个约束违规.我试着把我的代码作为:
public void insert(...){
long insertID = 0;
try{
Log.i("DataOperation", String.valueOf(insertID));
insertID = sqllitedb.insert(DBase.TABLE_NAME, null, contentValues);
}catch(android.database.sqlite.SQLiteException ex){
Log.i("dataops_", "Error Constraint"); //Print
}
}
Run Code Online (Sandbox Code Playgroud)
什么都没发生..我的logcat充满了堆栈跟踪.没有评论行的标志(见上文).
怎么办呢.注意在我的整个程序中只有一个插入声明(在上面).测试好然后我会继续.
还告诉我如何处理我的数据库是否已创建/已存在,以便如果存在,我将不会运行我的DownloadTask.
也许insert(..)方法捕获异常本身.
改用使用insertOrThrow(..)方法.
try {
SQLiteDatabase db = SQLiteHelper.getDatabase();
db.insertOrThrow(Table, nullColumnHack, values);
} catch (SQLiteConstraintException e) {
Log.d(TAG, "failure to insert word,", e);
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5161 次 |
| 最近记录: |