0

我使用 Squirrel(使用 jTDS)远程连接到我的数据库,所以我认为我的参数设置正确。GAS 系统地给我一个错误:“未能建立数据库连接”。有什么办法可以调试那个坏连接?我的代码来自 GAS JDBC 示例,但我使用的是 mssql。

有什么建议么?

注意:我也尝试了以下方法,因为这是我在 Squirrel 中输入的方式:

  var conn = Jdbc.getConnection("jdbc:sqlserver:///my.server.adress:2433/MyName", "MyName", "password");

卡住!

function foo() {
  var conn = Jdbc.getConnection("jdbc:sqlserver:///my.server.adress:2433", "MyName", "password");
  var stmt = conn.createStatement();
  stmt.setMaxRows(100);
  var start = new Date();
  var rs = stmt.executeQuery("select * from MyTable");

  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var cell = doc.getRange('a1');
  var row = 0;
  while(rs.next()) {
    cell.offset(row, 0).setValue(rs.getString(1));
    cell.offset(row, 1).setValue(rs.getString(2));
    cell.offset(row, 2).setValue(rs.getString(3));
    cell.offset(row, 3).setValue(rs.getString(4));
    row++;
  }
  rs.close();
  stmt.close();
  conn.close();
  var end = new Date();
  Logger.log("time took: " + (end.getTime() - start.getTime()));
}
4

3 回答 3

1

好的,愚蠢的错误:连接字符串中的额外斜杠。

看起来我必须使用限定名称。所以我必须使用 AccountName.DatabaseName.MyTable 而不是 MyTable

但它有效!

于 2012-08-05T18:52:27.260 回答
0

您也可以在连接字符串中指定数据库名称:

https://developers.google.com/apps-script/jdbc

var conn = Jdbc.getConnection("jdbc:mysql://:/", "user", "password");

应该排除指定数据库名称的需要。

于 2012-08-06T15:26:24.467 回答
0

这是完整的功能(它有效!),使用 USE:

  function typestring_f() {
  var conn = Jdbc.getConnection("jdbc:sqlserver://my.server.adress:2433", "MyName", "password");
  var stmt = conn.createStatement();

  var ret = stmt.execute("USE wgwDatabase;");

  pstmt=conn.prepareStatement("{ call f_dict_sp(?)}");  // get the stored procedure with 1 parameter.
  pstmt.setString(1, "cat%"); // set the parameter (a string for matching with Like )
  pstmt.setMaxRows(100);
  rs= pstmt.executeQuery(); // run the query

  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var cell = doc.getActiveRange(); // ac('a1');
  var row = 0;
  while(rs.next()) {
    cell.offset(row, 0).setValue(rs.getString(1));
    cell.offset(row, 1).setValue(rs.getString(2));
    row++;
  }
  rs.close();
  pstmt.close();
  conn.close();

 }
于 2012-08-07T03:49:50.840 回答