【问题标题】:Problem in executing query using ormlite in android在android中使用ormlite执行查询的问题
【发布时间】:2026-02-08 15:00:01
【问题描述】:

我正在使用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;
    }
} 

寻求帮助...

【问题讨论】:

  • 能否请您发布整个例外情况?

标签: android sqlite ormlite


【解决方案1】:

如果没有有关您遇到的特定错误的更多信息(请在您的问题中添加完整的例外),我们真的无法帮助您@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);    

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

【讨论】:

  • 感谢您的回复,但是当我执行 daoObject.queryForAll() 方法时也会发生这种情况,并且它给出了相同的 SQLEXCEPTION 执行 Android 查询时出现问题:SELECT * FROM user
  • 您能否将整个例外发布到您的问题中?
  • 我调试了我的源代码,发现 StatementExecuter 类的查询方法抛出了 SQL 异常,但我不知道它背后的原因是什么。
  • 谢谢你的方法,我再次调试,发现错误是由于错误的列名造成的。你发布整个异常的想法给了我一个线索,我附上了 ormlite 的源代码并找到解决方案再次感谢
【解决方案2】:

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

public User(){

}

【讨论】: