我正在使用this programming blog上的程序来使用预先填充的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;
}
}
寻求帮助......
答案 0 :(得分: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);
如果您发布了例外情况,我会在更多帮助下编辑我的答案。
答案 1 :(得分:0)
别忘了编写实体类的默认构造函数。在我的情况下,我忘记编写构造函数,并得到相同的异常。
public User(){
}