2014-03-27 10 views
6

erhalten ist neu zu groovy. Möchten Sie wissen, wie Sie die Anzahl der Zeilen von einem bestimmten SQL-Ergebnis erhalten, das unten von einer SQL-Abfrage zurückgegeben wird. Ich habe viel gegoogelt, aber keine passende Lösung gefunden.Wie man Zeilenanzahl in groovy sql

Hier ist meine SQL-Abfrage Klassencode

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() sollten Sie geben Die Anzahl der zurückgegebenen Datensätze. –

+0

Danke :) Arbeitete. Netbeans gab mir keine Autosuggestion 'Größe' – jason

+0

Kein Problem. Hinzugefügt als Antwort (: –

Antwort

8

die Zählung oder Größe der Datensätze verwendet zurückgegeben data.size() zu erhalten.

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

Hier ist der Code, um die Anzahl der Zeilen in Grails zu erhalten. autowire Zum einen die Datenquelle in Ihrem Service und erstellen Sie eine SQL-Objekt aus, dass als shown.This Sql aus groovy.sql.Sql

importiert werden sollen
Sql sql = new Sql(datasource) 

dann mit dem Code unten u solange die Zählung zu erhalten.

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

Es gibt keine Notwendigkeit, vollständige Datensätze aus der Datenbank zu holen

+1

) Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich Verbessern Sie die Qualität Ihres Posts Beachten Sie, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Personen möglicherweise die Gründe für Ihren Code-Vorschlag nicht kennen. – msrd0

+1

Dies sollte die akzeptierte Antwort sein. data.size() in der vorherigen Antwort ist nur die Größe des Arrays, aber für ein größeres Dataset verwenden Sie Paginierung und data.size() gibt nur die Seitengröße und nicht die übereinstimmende Datensatzanzahl zurück. Auch wenn Ihr Zweck nur darin besteht, die Anzahl zu erhalten, wird data.size() noch schlimmer, da es alle Datensätze aus der Datenbank bekommen wird. – saurabh

1

sql.firstRow() ist gut einreihige SQL-Anweisungen auszuführen. Der Elvis-Operator hilft, wenn das SQL-Ergebnis keine Zeilen enthält.

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

im Auge behalten data.size() wird noch 1 zurückkehren, wenn count (*), selbst wenn es 0 zurückgibt, aber die Zeilenanzahl noch = 1

Verwandte Themen