Вопрос

Я использую Groovy SQL, чтобы получить результаты.Это вывод с моей коробки Linux.

%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
.

Так что он говорит, что он не может получить знаменитые столбцы, есть ли способ, которым он может получить результат и отобразить?

<Сильное> Обновление

Я использовал следующий код

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 не будет работать наверняка

Это было полезно?

Решение

Эта работа?Запрос метаданных для имени столбца и получение значения по индексу:

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

или, чтобы получить столбец напрямую

row.'Run Value'
.

Другие советы

Еще одна альтернатива - getat (int).В вашем случае это вернет «значение запуска»:

row.getAt(-3)

Additiiteiabannly to @ Ответ @ Tim_yates Я хотел бы отметить, что row имеет метод GenaCodicetacode.Это позволяет получить ряд просто как карту.Не нужно вызывать toRowResult(), если нам нужны только имена столбцов или ширина таблицы.

sql.eachRow("sp_configure 'number of open partitions'"){ row ->
  row.toRowResult().each(){ colName, value ->
    println "${colName} = ${value}"
  }
}
.

Этот код делает абсолютно одинаково, но выглядит намного более понятно

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top