如何使用jdbc和googleapp脚本保持多个查询的连接?

mzaanser  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(333)

我看到了这个帖子,但它并没有真正帮助我解决我的问题。
我用一个 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>

但是在这里 connnull .
我也有很多查询发送时,我的输入(搜索栏)是 onchange 我使用第一种方法,它可以工作,除了它不允许快速键入,因为它增加了每个字符的连接请求。
我能做什么?

mznpcxlj

mznpcxlj1#

也许可以尝试用你的第一种方法来链接:

<script>
 var onSuccessThird = function (data){
  //update my HTML with data
 }
 var onSuccessSecond = function (data){
  //update my HTML with data
 google.script.run.withSuccessHandler(onSuccessThird).thirdFunc();
 }
 var onSuccessFirst = function (data){
  //update my HTML with data
 google.script.run.withSuccessHandler(onSuccessSecond).secondFunc();
 }
 google.script.run.withSuccessHandler(onSuccessFirst).firstFunc();
</script>

注意事项: google.script.run 是一个异步函数。所有三个运行都将逐个调用,而不必等待前一个运行完成,这意味着在第一种方法中,几乎3个jdbc连接将同时打开。

单身汉 script.run 呼叫将关闭连接。所以在第二种方法中 conn 在第一次运行结束或之前将为null。
当脚本完成执行时,jdbc连接会自动关闭(请记住,一个google.script.run调用将算作一个完整的执行,即使发出该调用的html服务页保持打开状态。)

参考文献:

关闭连接

afdcj2ne

afdcj2ne2#

如果您能够使用连接池,那么您可以通过检查null并对一组完整的请求-响应仅打开/关闭一次连接,从而使连接在一组完整的事务中保持活动状态。

相关问题