Apache DBUtils и скалярное значение

Мне нужно получить скалярное значение с помощью DBUtils, кто-нибудь знает, как его получить? В настоящее время я делаю:

    String sql = "SELECT count(*) FROM t1 WHERE cod = ?";
    final QueryRunner run = new QueryRunner(new AppDataSource());
    ScalarHandler scalar = new ScalarHandler();
    long count = -1l;
    try{
        Object[] params =
        {
                code
        };
        count = ((Long) run.query(sql, scalar, params)).longValue();
    }
    catch(SQLException e){
        e.printStackTrace();
    }
    System.out.println(count);

но результат все равно -1. Когда я тестирую его с помощью db util, я получаю правильный номер.


person 1ac0    schedule 23.03.2013    source источник


Ответы (2)


Я надеюсь, что приведенный ниже код поможет вам, ScalarHandler просто выбирает одно значение столбца.

public Object queryColumnVaue(String sql,String columnName) throws SQLException { 
     ScalarHandler<Object> kh = new ScalarHandler<Object>(columnName);
     return query(sql,kh);
 }
person zg_spring    schedule 09.04.2015

Хм, нет ничего лучше, чем переименовать стандартное имя схемы в "public" (PostgreSQL) и не использовать его в SQL, это правильный путь:

String sql = "SELECT count(*) FROM \"MySchema\".t1 WHERE cod = ?";

Надеюсь кому-нибудь поможет.

person 1ac0    schedule 23.03.2013