2014-03-27 7 views
6

Новинка для groovy. Хотите узнать, как получить количество строк из заданного результата sql, возвращаемого форму sql-запроса ниже. Я много искал, но не нашел правильного решения.Как получить количество строк в groovy sql

Вот мой запрос SQL код класса

def sql = Sql.newInstance(dataSource); 

    try 
    { 
     data = sql.rows("select field_value,form_table_column_name from 
       form_tbl where form_id=1"); 
     sql_one.close() 

    } catch(Exception e) { 

     System.out.println(e)  
    } 
+4

data.size() должен дать вам количество возвращаемых записей. –

+0

Спасибо :) Работала. Netbeans не дал мне размер автозахвата ' – jason

+0

Не проблема. Добавлено это как ответ (: –

ответ

8

Чтобы получить количество или размер возвращаемых записей используется data.size().

-2
sql.each row(" SELECT COUNT(*) FROM db.table WHERE field= myField"){ 
    def total += it.count 
} 
13

Вот код, который поможет подсчет строк в grails. Во-первых autowire источник данных в службе и создать Sql объект от этого, как shown.This Sql должны быть импортированы из groovy.sql.Sql

Sql sql = new Sql(datasource) 

Тогда с кодом ниже и может получить отсчет до тех пор.

def result = sql.firstRow('select count(*) as cont from <table>') 
long count = result.cont 

Там нет необходимости получать полные записи из базы данных

+1

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшите качество своего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. – msrd0

+1

Это должен быть принятый ответ. data.size() в предыдущем ответе просто размер массива, но для большего набора данных вы будете использовать разбиение на страницы, а data.size() будет возвращать только размер страницы, а не соответствующий счетчик записей. Также, если ваша цель состоит только в том, чтобы получить счет, тогда data.size() будет быть еще хуже, поскольку он получит все записи из базы данных. – saurabh

1

sql.firstRow() хорошо выполнять операторы однорядного SQL. Оператор Elvis помогает, если результат SQL не имеет строк.

def cnt = sql.firstRow('SELECT COUNT(*) AS cnt FROM form_tbl WHERE form_id=:id', id:1)?.cnt 
0

иметь в виду data.size() по-прежнему будет возвращать 1, при использовании COUNT (*), даже если она возвращает 0, но количество строк еще = 1

Смежные вопросы