2012-08-04 105 views
0

我用松鼠(與jTDS)遠程連接到我的數據庫,所以我想我有我的參數設置正確。 GAS系統地給我一個錯誤:「無法建立數據庫連接」。任何方式來調試那個不好的連接?我的代碼來自GAS JDBC示例,但我使用的是mssql。連接錯誤爲一個mssql jdbc連接

有什麼建議嗎?

注:我嘗試以下爲好,因爲我們如何我松鼠輸入:

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())); 
} 

回答

0

這是完整的功能(它的工作!),與用途:

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(); 

} 
1

好的,愚蠢的錯誤:連接字符串中的額外斜槓。

它也看起來像我必須使用限定名稱。所以,而不是MyTable,我必須使用AccountName.DatabaseName.MyTable

但它的工作!

0

您可以指定在連接字符串中的數據庫名稱,以及:

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

VAR康恩= Jdbc.getConnection( 「JDBC:MySQL的://:/」, 「用戶」,「密碼「);

這個應該排除了需要指定數據庫名稱。

+0

謝謝!我的解決方案是使用.. USE語句: 'var stmt = conn.createStatement(); var ret = stmt.execute(「USE wgwDatabase;」);'您給我的另一種語法對我來說有點神祕! – wgw 2012-08-07 03:36:52