1

我正在使用这个编程博客上的程序来使用预填充的 sqlite 表。我试图在表中插入任何行,但它总是给出 SQLException:

Problems executing Android query: SELECT * FROM `user` WHERE `username`='Shadow'

这是我收到此错误的方法:

public User getByUsername(String username) {        
    try {
        QueryBuilder<User, String> qb = userDao.queryBuilder(); 
        qb.where().eq("username", username);    
        PreparedQuery<User> pq = qb.prepare();
        return userDao.queryForFirst(pq);
    } catch (SQLException e) {
        e.printStackTrace();
        return null;
    }
} 

寻求帮助...

4

2 回答 2

5

如果没有有关您遇到的特定错误的更多信息(请在您的问题中添加完整的例外),我们真的无法帮助您@deepak

我会说您的代码看起来格式正确且适当。我喜欢定义在查询中使用的字段,如下所示:

@DatabaseTable(tableName = "users")
public class User @{
    public static final String USERNAME_FIELD_NAME = "username"; 

    ...
    @DatabaseField(columnName = USERNAME_FIELD_NAME)
    private String userName;
    ...

然后您的代码可以如下所示。这解决了查询和数据库模式不匹配的问题:

qb.where().eq(User.USERNAME_FIELD_NAME, username);    

如果您发布例外情况,我将在更多帮助下编辑我的答案。

于 2011-09-06T12:47:50.503 回答
0

不要忘记编写实体类的默认构造函数。在我的情况下,我忘记编写构造函数并且得到了同样的异常。

public User(){

}
于 2014-10-28T06:01:40.777 回答