2012-01-17 46 views
2

我正在使用Groovy Sql獲取結果。這是我的Linux機器的輸出。Groovy Sql獲取所有列

%isql -U abc -P abc -S support 
1> sp_configure 'number of open partitions' 
2> go 
Parameter Name     Default  Memory Used Config Value Run Value Unit     Type 
------------------------------ ----------- ----------- ------------ ------------ -------------------- ---------- 
number of open partitions    500  5201   5000   5000 number    dynamic 

(1 row affected) 
(return status = 0) 
1> 

我使用Groovy代碼

def sql = Sql.newInstance("jdbc:abc:sybase://harley:6011;DatabaseName=support;",dbuname,dbpassword,Driver) 
sql.eachRow("sp_configure 'number of open partitions'"){ row -> 
     println row.run_value 
    } 

,但它給了我

Exception in thread "main" java.sql.SQLSyntaxErrorException: [abc][Sybase JDBC Driver]Invalid column name: run_value 

所以說,它無法得到speciied列,有沒有辦法可以獲取的結果,顯示?

更新

我用下面的代碼

sql.eachRow("sp_configure 'number of open partitions'"){ row -> 
      println row 
    } 

,這讓我

[Parameter Name:number of open partitions  , Default:  500, Memory Used:  5201, Config Value:  5000, Run Value:  5000, Unit:number    , Type:dynamic ] 

我怎樣才能得到Run Value? (因爲它裏面有一個空格)

row.Run Value不會肯定

+0

是否'的println row.Type'工作? – 2012-01-17 13:01:49

+0

@aF:不起作用 – abi1964 2012-01-18 06:21:29

回答

3

工作,工作的呢?查詢元數據的列名和索引所獲得的價值:

sql.eachRow("sp_configure 'number of open partitions'"){ row -> 
    (1..row.getMetaData().columnCount).each { 
    println "${row.metaData().getColumnName(it)} = ${row[ it ]}" 
    } 
} 

或者,得到的欄目中直接

row.'Run Value' 
+0

它給我'在線程中的異常「主要」java.sql.SQLException:[informatica] [SQLServer JDBC驅動程序]無效的列名稱:metaData'異常 – abi1964 2012-01-18 04:34:38

+0

請參閱我的更新,如何獲取列名有空間嗎? – abi1964 2012-01-18 06:51:07

+1

嘗試row.'Run值' – 2012-01-18 06:53:35

0

另一種方法是getAt(INT)。在你的情況,這將返回 '運行值':

row.getAt(-3)