0

我在我的 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,它仍然返回一个带有零的对象。

有任何想法吗?

4

1 回答 1

0

好吧,我通过跟踪代码弄清楚了。

我想: buildDataFromCursor(cursor); 是来自 android 数据库导入的函数,但它是来自 DroidDao.java 的方法。我的问题是我的 Connection 对象中没有 SETTERS,其中 buildDataFromCursor(cursor); 使用 setter 将数据加载到对象中。

您的二传手需要具有以下结构:

Column name:
PART_ID

Setter:
void setPart_id(int value)...
于 2013-04-18T16:58:06.940 回答