如何在谷歌应用程序脚本中从JdbcResultSet获取getArray?

时间:2016-11-17 12:53:28

标签: jdbc google-apps-script

我能够循环并从jdbc结果获取结果到数组,但我想知道如何使用getArray()执行此操作。

var results = stmt.executeQuery("select col1, col2 from sometable;");
var arr1 = results.getArray("col1");

另外,如何在google app脚本中转储或检查结果对象?

2 个答案:

答案 0 :(得分:0)

您可能需要先查看此课程的Class JdbcArraydocumentation

正如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;
&#13;
&#13;