如何跳过autoIncrement列以使用JDBC Google Apps脚本在mySQL db上写数据

问题描述 投票:1回答:1

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

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

我在下面使用了代码。

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数据库。

mysql jdbc google-apps-script sql-insert
1个回答
2
投票

如果该列是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, ...

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

© www.soinside.com 2019 - 2024. All rights reserved.