java - 准备好的查询的奇怪错误不是 SELECT_LONG 类型

标签 java android ormlite

我想问问这个怎么查询。我想检查编辑文本中的名称,如果名称存在,作为记录的一部分,在数据库中我想用这个对象的数据填充所有编辑文本。我也有非常奇怪的错误。请帮助或给我一个如何开始的建议。我是初学者。感谢所有的答案和线索。

这是我的代码:

if(et_nazwa!=null){


             long value = 0;
            try {
                PreparedQuery<Klient> query = klientDao.queryBuilder()
                        .where().eq("Kli_nazwa",et_nazwa.getText().toString()).prepare();
                value = klientDao.countOf(query);
            } catch (java.sql.SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

                try {
                    if(value!=0){

                    PreparedQuery<Klient> q_adres = klientDao.queryBuilder().selectColumns("Kli_adres").where().eq("Kli_nazwa",et_nazwa.getText().toString()).prepare();
                    PreparedQuery<Klient> q_nip = klientDao.queryBuilder().selectColumns("Kli_nip").where().eq("Kli_nazwa",et_nazwa.getText().toString()).prepare();

                    et_adres.setText(q_adres.toString());
                    et_nip.setText(q_nip.toString());
                    }
                } catch (java.sql.SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

我遇到了这样一个奇怪的错误:

java.lang.IllegalArgumentException: Prepared query is not of type SELECT_LONG, did you call QueryBuilder.setCountOf(true)?

最佳答案

java.lang.IllegalArgumentException: Prepared query is not of type SELECT_LONG, did you call QueryBuilder.setCountOf(true)?

所以异常试图告诉你出了什么问题。当您构建一个查询时,ORMLite 不知道该查询将用于什么。因为您可以选择各种列等或使用聚合函数(如 MAX(...)),所以它会记录一个内部查询类型,然后在执行查询时检查它。

如果你想使用 Dao.countOf(...) 那么你需要在你的 QueryBuilder 对象上添加 setCountOf(true) . Dao.countOf(...) 的文档应该更明确地说明这一事实。

PreparedQuery<Klient> query = klientDao.queryBuilder().setCountOf(true)
     .where().eq("Kli_nazwa",et_nazwa.getText().toString()).prepare();

如果您使用 queryBuilder.countOf()where.countOf() 那么它将在内部设置计数标志。您可以通过执行以下操作来获取没有此问题的查询计数:

value = klientDao.queryBuilder()
     .where().eq("Kli_nazwa",et_nazwa.getText().toString()).countOf();

顺便说一句,这是一个奇怪的模式:

    et_adres.setText(((PreparedQuery)q_adres).toString());

也许您想执行以下操作?

 String queryString = klientDao.queryBuilder()...prepareStatementString();

关于java - 准备好的查询的奇怪错误不是 SELECT_LONG 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22183886/

相关文章:

android - ORMLite 性能 : ArrayAdapter vs CursorAdapter vs a custom adapter

android - 自动递增 ID 插入数据 ORMLITE

java - 如何让几十个线程同时运行

java - Java中的多个字符串输入长度

Android后台服务从phonegap获取window.localStorage

java - onClickListener()的设置方式

java - 获取出现次数最大次数

java - 为什么 int 参数允许传递 char 值,但 char 参数不接受传递 int 值?

android - BroadcastReceiver 问题(接收器未注册错误)

sqlite - ORMLite:如何在没有外键的情况下连接两个表