【发布时间】:2016-11-17 12:53:28
【问题描述】:
虽然我可以循环并从 jdbc 结果中获取结果到数组,但我想知道如何使用 getArray() 来做到这一点。
var results = stmt.executeQuery("select col1, col2 from sometable;");
var arr1 = results.getArray("col1");
另外,如何在谷歌应用脚本中转储或检查结果对象?
【问题讨论】:
虽然我可以循环并从 jdbc 结果中获取结果到数组,但我想知道如何使用 getArray() 来做到这一点。
var results = stmt.executeQuery("select col1, col2 from sometable;");
var arr1 = results.getArray("col1");
另外,如何在谷歌应用脚本中转储或检查结果对象?
【问题讨论】:
试试下面的代码。它基于官方文档中的这个示例:
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)
【讨论】:
您可能需要先检查此类的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 也可能有帮助。
【讨论】: