【问题标题】:How to skip autoIncrement column to write data on mySQL db using JDBC Google Apps Script如何跳过 autoIncrement 列以使用 JDBC Google Apps 脚本在 mySQL db 上写入数据
【发布时间】:2019-10-26 23:56:58
【问题描述】:

我设置了一个 Apps 脚本程序,它需要将数据保存到数据库。但是,它不起作用。

我尝试使用 Google Apps 脚本文档中的代码,但看不到如何跳过名为 ID 的自动增量字段及其主键。

我使用了下面的代码。

var connectionName = 'frms-db:us-central1:****';
var user = 'rj-**';
var userPwd = 'fEwnj*LAAj3****';
var db = 'CCW_CLR';

var dbUrl = 'jdbc:google:mysql://' + connectionName + '/' + db;

var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);

var stmt2 = conn.prepareStatement('INSERT INTO tblPreInterview '
                               + '(ID, Timestamp, Email, Section4, Section5, Section6, Section7, Pages12_13, MinorsAtHome, FirearmsStoreage, ReferenceType1, ReferenceName1, ReferencePhone1, ReferenceType2, ReferenceName2, ReferencePhone2, ReferenceEmail2, '
                               + 'ReferenceType3, ReferenceName3, ReferencePhone3, ReferenceEmail3, DeptConditions, NoGuarantee, ServicePolicy, NoRefunds, PenaltyPerjury, Authorization) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, '
                               + '?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');

stmt2.setString(2, new Date());
stmt2.setString(3, data.email);
stmt2.setString(4, data.section4);
stmt2.setString(5, data.section5);
stmt2.setString(6, data.section6);
stmt2.setString(7, data.section8);
stmt2.setString(8, data.pages1213);
stmt2.setString(9, data.minors);
stmt2.setString(10, data.storefirearm);
stmt2.setString(11, data.reftype1);
stmt2.setString(12, data.refcon1);
stmt2.setString(13, data.refphone1);
stmt2.setString(14, data.refemail1);
stmt2.setString(15, data.reftype2);
stmt2.setString(16, data.refcon2);
stmt2.setString(17, data.refphone2);
stmt2.setString(18, data.refemail2);
stmt2.setString(19, data.reftype3);
stmt2.setString(20, data.refcon3);
stmt2.setString(21, data.refemail3);
stmt2.setString(22, data.deptcondition);
stmt2.setString(23, data.review_agree1);
stmt2.setString(24, data.review_agree2);
stmt2.setString(25, data.review_agree3);
stmt2.setString(26, data.review_agree4);
stmt2.setString(27, data.review_agree5);
stmt2.setString(28, data.signature);
stmt2.execute();

我希望将数据添加到我的 SQL 数据库中。

【问题讨论】:

  • 这里的尾随逗号是什么:Authorization,) vnot working 是对问题的错误描述。再次阅读minimal reproducible example 以纠正您的问题。
  • 请使用其中一位用户提供的建议更新您问题中的代码(不插入 ID 列)。另外,请添加您收到的错误消息。
  • 代码已更新。
  • 我仍然在 prepareStatement 函数中看到“ID”。另外,您没有发布错误。

标签: mysql jdbc google-apps-script sql-insert


【解决方案1】:

如果列是 auto_incremented,则无需为其提供值。当您执行插入但没有为该列指定值时,MySQL 会自动分配一个新编号。

所以您不应该在insert 中指定此列,即更改:

var stmt2 = conn.prepareStatement(
    'INSERT INTO tblPreInterview '
    + '(ID, Timestamp, Email, Section4, Section5, Section6, ...

收件人:

'INSERT INTO tblPreInterview '
+ '(Timestamp, Email, Section4, Section5, Section6, ...

因此你应该删除第一个参数。

【讨论】:

  • 我试过了,但还是不行。也许我缺少 stm2.setString 部分的东西。 :(
  • @RJVillamer:它不起作用:您遇到了错误,是哪一个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
相关资源
最近更新 更多