[英]connection error for a mssql jdbc connection
I connect remotely to my database with Squirrel (with jTDS), so I think I have my parameters set properly. 我使用Squirrel(使用jTDS)远程连接到数据库,因此我认为我的参数设置正确。 GAS gives me systematically an error: "failed to establish a database connection". GAS系统地给我一个错误:“无法建立数据库连接”。 Any way to debug that bad connection? 有什么方法可以调试该不良连接? My code is from the GAS JDBC example, but I am using mssql. 我的代码来自GAS JDBC示例,但我使用的是mssql。
Any suggestions? 有什么建议么?
Note: I tried the following as well, because that us how I enter it in Squirrel: 注意:我也尝试了以下操作,因为这是我们在Squirrel中输入它的方式:
var conn = Jdbc.getConnection("jdbc:sqlserver:///my.server.adress:2433/MyName", "MyName", "password");
Stuck! 卡住!
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()));
}
Ok, silly mistake: extra slash in the connection string. 好吧,这是愚蠢的错误:连接字符串中的额外斜杠。
It also looks like I have to use qualified names. 看起来我也必须使用限定名。 So instead of MyTable, I have to use AccountName.DatabaseName.MyTable 因此,我必须使用AccountName.DatabaseName.MyTable代替MyTable。
But it works! 但这有效!
You can specify the database name in the connection String as well: 您也可以在连接字符串中指定数据库名称:
https://developers.google.com/apps-script/jdbc https://developers.google.com/apps-script/jdbc
var conn = Jdbc.getConnection("jdbc:mysql://:/", "user", "password"); var conn = Jdbc.getConnection(“ jdbc:mysql://:/”,“ user”,“ password”);
This should preclude the need to specify a database name. 这应该排除了指定数据库名称的必要。
This is the complete function (it works!), with USE: 这是使用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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.