我能够循环并从jdbc结果获取结果到数组,但我想知道如何使用getArray()执行此操作。
var results = stmt.executeQuery("select col1, col2 from sometable;");
var arr1 = results.getArray("col1");
另外,如何在google app脚本中转储或检查结果对象?
答案 0 :(得分:0)
您可能需要先查看此课程的Class JdbcArray和documentation。
正如java.sql.Array中讨论的那样,
Array接口提供了将SQL ARRAY值的数据作为数组或
ResultSet
对象提供给客户端的方法。如果SQL ARRAY的元素是用户定义的数据类型(UDT),则它们可以是自定义映射的。
要创建自定义映射,您必须执行以下两项操作:
- 创建一个实现用于自定义映射的UDT的SQLData接口的类。
- 在包含的类型映射中创建一个条目
- UDT的完全限定SQL类型名称
- 实现SQLData的类的Class对象
然后,您可以检查Class JdbcResultSet及其documentation。
最后,Guide to JDBC也可能会有所帮助。
答案 1 :(得分:0)
尝试以下代码。它来自官方文档的这个例子:
https://developers.google.com/apps-script/guides/jdbc#read_from_the_database
//Execute query
var results = stmt.executeQuery("select col1, col2 from sometable;");
//Generate a 2d array to insert in spreadsheet
var array2d = [];
//Generate array with titles
var numCols = results.getMetaData().getColumnCount();
var titles = [];
for (var col = 0; col < numCols; col++){
var colName = results.getMetaData().getColumnLabel(col + 1);
titles.push(colName);
}
//Insert titles in 2d array
array2d.push(titles);
//Extract results from query and insert insert into array2d
while (results.next()) {
//This is an array with data from each row
rowData = [];
for (var col = 0; col < numCols; col++) {
rowData.push(results.getString(col + 1));
}
//Insert data from each row in 2d array
array2d.push(rowData);
}
//close
results.close();
Logger.log(array2d);
SpreadsheetApp.getActiveSheet()
.getRange(1, 1, Object.keys(array2d).length, array2d[0].length)
.setValues(array2d)
&#13;