我看到了这个帖子,但它并没有真正帮助我解决我的问题。
我用一个 HTML
打开一个对话框,在google电子表格上有一个插件,我正在使用 JBDC
.
我从多个查询中加载一些数据 MYSQL
数据库,我也有一个搜索栏来搜索数据库中的数据,在未来,我想我的html自动显示各种数据库值取决于我的选择 HTML
第页。基本上只有一个应用程序有很多查询,所以我想应该有一个连接对象可以使用。
我已经尝试了很多可以用伪代码展示的东西。
每次打开一个新连接
这是我的gs文件
function firstFunc()
{
var conn = Jdbc.getConnection(dbUrl, user, userPwd);
//do my thing
return (datas);
}
function secondFunc()
{
var conn = Jdbc.getConnection(dbUrl, user, userPwd);
//do my thing
return (datas);
}
function thirdFunc()
{
var conn = Jdbc.getConnection(dbUrl, user, userPwd);
//do my thing
return (datas);
}
然后我的 HTML
```
但是当我使用免费的数据库提供者开发第三个连接时,返回一个错误,告诉我验证密码或用户名,因为它无法连接到数据库。
尝试将连接从服务器传递到客户端,然后再传递回服务器:
gs文件
function getConnection()
{
return (Jdbc.getConnection(dbUrl, user, userPwd););
}
function firstFunc(conn)
{
conn...
//do my thing
return (datas);
}
function secondFunc(conn)
{
conn...
//do my thing
return (datas);
}
function thirdFunc(conn)
{
conn...
//do my thing
return (datas);
}
然后我的 `HTML` ```
<script>
var onSuccessFirst = function (data){
//update my HTML with data
}
var onSuccessSecond = function (data){
//update my HTML with data
}
var onSuccessThird = function (data){
//update my HTML with data
}
var onSuccessConnection = function(conn)
{
google.script.run.withSuccessHandler(onSuccessFirst).firstFunc(conn);
google.script.run.withSuccessHandler(onSuccessSecond).secondFunc(conn);
google.script.run.withSuccessHandler(onSuccessThird).thirdFunc(conn);
}
google.script.run.withSuccessHandler(onSuccessConnection).getConnection();
</script>
但是在这里 conn
是 null
.
我也有很多查询发送时,我的输入(搜索栏)是 onchange
我使用第一种方法,它可以工作,除了它不允许快速键入,因为它增加了每个字符的连接请求。
我能做什么?
2条答案
按热度按时间mznpcxlj1#
也许可以尝试用你的第一种方法来链接:
注意事项:
google.script.run
是一个异步函数。所有三个运行都将逐个调用,而不必等待前一个运行完成,这意味着在第一种方法中,几乎3个jdbc连接将同时打开。单身汉
script.run
呼叫将关闭连接。所以在第二种方法中conn
在第一次运行结束或之前将为null。当脚本完成执行时,jdbc连接会自动关闭(请记住,一个google.script.run调用将算作一个完整的执行,即使发出该调用的html服务页保持打开状态。)
参考文献:
关闭连接
afdcj2ne2#
如果您能够使用连接池,那么您可以通过检查null并对一组完整的请求-响应仅打开/关闭一次连接,从而使连接在一组完整的事务中保持活动状态。