1

我的 Google Cloud SQL 数据库中有一个带有自动递增列的表。

如何INSERT通过 google-apps-script/JDBC 执行查询并取回新增加的列的值?

例如,我的列名为ticket_id. 我想在结果集中返回INSERTticket_id值。

换句话说,如果我有以下结构,我需要修改什么或如何修改,以便我可以做类似的事情rs = stmt.getGeneratedKeys();

var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms:.......  
var stmt = conn.createStatement();

//build my INSERT sql statement  
var sql = "insert into ......

var rs = stmt.executeUpdate(sql);

我看到有一个 JDBC 语句类,其中有一个名为的成员,RETURN_GENERATED_KEYS但到目前为止我还不够聪明,无法弄清楚如何正确操作它并获得我需要的东西。是RETURN_GENERATED_KEYS常数,是属性,还是我该如何利用它?

4

1 回答 1

5

Apps Script JDBC 服务的文档似乎有点缺乏。我为此创建了一个内部任务项。值得庆幸的是,Apps Script JDBC API 非常接近 Java JDBC API。stmt.getGeneratedKeys()关键是使用调用来取回结果集。

我使用 MySQL 文档中的动物示例构建了一个示例表,下面的这个示例很好地处理了这个示例,并记录了下一个递增的 ID。

function foo() {
  var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://<instance>/<db>");
  var stmt = conn.createStatement();
  var sql = "INSERT INTO animals (name) VALUES ('dog')";
  var count = stmt.executeUpdate(sql,1)//pass in any int for auto inc IDs back
  var rs = stmt.getGeneratedKeys();
  //if you are only expecting one row back, no need for while loop
  // just do rs.next();
  while(rs.next()) { 
    Logger.log(rs.getString(1));
  }
  rs.close();
  stmt.close();
  conn.close();
}
于 2012-11-24T19:24:42.840 回答