我的数据库中有几列被注释为 uniqueCombo=true
@DatabaseField(columnName = "COL1", uniqueCombo = true)
private Double col1;
@DatabaseField(columnName = "COL2", uniqueCombo = true)
private Double col2;
根据 ormlite 文档,这两个字段的组合在表中应该是唯一的。为了测试这一点,我特意添加了相同的字段。我确实收到了 SQLException,但不确定如何处理此异常并要求用户进行更改。
try {
mydao.create(myInfo);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
/* Need to uniquely identify constraint failed error here
* and ask user to make suitable change */
}
知道如何实现这一点。
- 更新 - -
SQLException getErrorCode 和 getSQLState 分别返回 0 和 null。
Logcat 堆栈跟踪:
Caused by: android.database.sqlite.SQLiteConstraintException: column NAME is not unique (code 19)
01-31 22:15:14.042: W/System.err(2586): at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
01-31 22:15:14.042: W/System.err(2586): at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:775)
01-31 22:15:14.042: W/System.err(2586): at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
01-31 22:15:14.042: W/System.err(2586): at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
01-31 22:15:14.042: W/System.err(2586): at com.j256.ormlite.android.AndroidDatabaseConnection.insert(AndroidDatabaseConnection.java:122)
01-31 22:15:14.042: W/System.err(2586): ... 15 more