我在我的 Android 应用程序中使用 DroidDao 作为持久性 SQLite 数据库。
我有一个连接表:
PART_ID
GPS_ID
SAND_ID
我在这个库中的两个函数有问题:
/**Get an Object by clause*/
public T getByClause(String clause, String[] clauseArgs) {
T object = null;
Cursor cursor = database.query(getTableName(), getArrayColumns(),
clause, clauseArgs, null, null, "1");
if(cursor.moveToFirst()){
try {
object = buildDataFromCursor(cursor);
} catch (Exception e) {
e.printStackTrace();
}
}
if(! cursor.isClosed()){
cursor.close();
}
return object;
}
和:
/**List items by clause*/
public List<T> getAllbyClause(String clause, String[] clauseArgs, String groupBy, String having, String orderBy) {
List<T> objectList = new ArrayList<T>();
Cursor cursor = database.query(getTableName(), getArrayColumns(),
clause, clauseArgs, groupBy, having, orderBy);
if(cursor.moveToFirst()){
try {
do{
T object = buildDataFromCursor(cursor);
if(object != null){
objectList.add(object);
}
}
while(cursor.moveToNext());
} catch (Exception e) {
e.printStackTrace();
}
}
if(! cursor.isClosed()){
cursor.close();
}
return objectList;
}
我像这样使用它们:
Connection connection = myApp.getDataManager().getConnectionDao().getByClause("PART_ID = ?", new String[]{"44"});
List<Connection> connections = myApp.getDataManager().getConnectionDao().getAllbyClause("PART_ID = ?", new String[]{"44"}, null, null, null);
这两个函数都为 PART_ID、GPS_ID 和 SAND_ID 返回 0。即使我插入了一个不正确的 ID,函数应该返回 NULL,它仍然返回一个带有零的对象。
有任何想法吗?