mysql - 如何从 google apps 脚本 .gs 返回 jdbc ResultSet 到 html 文件

标签 mysql jdbc google-apps-script google-sites google-cloud-sql

我在我的 appscript 应用程序中使用 html 服务。

在我的sample.gs 文件中,我连接到jdbc 并从我的云sql 数据库获取值。

代码在我的sample.gs中是这样的

function doGet(){
return HtmlService.createTemplateFromFile('datatable').evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

function getSql(){  
  var conn = Jdbc.getCloudSqlConnection('here i write my sql url');
  var stmt = conn.createStatement();
  var results = stmt.executeQuery("select name, location, address, phone, fax from  person");
  Logger.log(results);
  return results;
}

记录器记录jdbcResultSet。所以查询工作正常。

在我的 datatable.html 文件中,我调用 gs 文件并从表中获取值。效果很好。但只有返回类型值在我的 html 文件中为 null。 我的 datable.html 代码就像他的

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type='text/javascript'>
    $(function(){
        var runner = google.script.run.withFailureHandler(onFailure);
        runner.withSuccessHandler(onSuccess).getSql();       
});
function onSuccess(data){
  alert(data);       
}
function onFailure(data){
  alert(data);
}

进入成功功能。但警报为空。 请帮助我如何获取结果值。

最佳答案

您需要在服务器端检索结果(gs代码),例如将它们放入数组中并返回到客户端。检查这个例子

代码.gs

function doGet(){
return HtmlService.createTemplateFromFile('datatable').evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

function getSql(){  
  var conn = Jdbc.getConnection('jdbc:mysql://sql4.freesqldatabase.com:3306/sql427377', 'sql427377', '');
  var stmt = conn.createStatement();
  var results = stmt.executeQuery("select name, location, address, phone, fax from  person");
  Logger.log(results);
  var resultsArray = [];
  while(results.next()) {
    resultsArray.push({'name': results.getString(1),
                  'location' : results.getString(2),
                  'address' : results.getString(3),
                  'phone' : results.getString(4),
                  'fax' : results.getString(5)});
  }
  return JSON.stringify(resultsArray);
}

数据表

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type='text/javascript'>
    $(function(){
        var runner = google.script.run.withFailureHandler(onFailure);
        runner.withSuccessHandler(onSuccess).getSql();       
});
function onSuccess(data){
var data = JSON.parse(data);
  for(var x in data) {
     $("#myTable").append("<tr><td>"+data[x].name+"</td><td>"+data[x].location+"</td>   <td>"+data[x].address+"</td><td>"+data[x].phone+"</td><td>"+data[x].fax+"</td></tr>");
  }
}
function onFailure(data){
  alert(data);
}
</script>

<table id="myTable"></table>

关于mysql - 如何从 google apps 脚本 .gs 返回 jdbc ResultSet 到 html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21179361/

相关文章:

java - 如何将主键的 Id 填充到外键

google-apps-script - 如何在 Apps 脚本项目中创建 doPost(e) 函数以从 Web 服务捕获 HTTP POST 数据?

javascript - 如何打开没有菜单项的侧边栏?

mysql - 有没有其他库可以用来在 Ruby 中连接 MySQL?

MySQL 数据库性能调优

java - 错误: MySQLSyntaxErrorException in a java-based web app

csv - 电子表格列的自动 MD5 和十六进制编码

MySQL REGEXP NOT 组运算符

mysqldump 不保存用户密码

java - SQL 删除级联帮助(特定问题)