Как пропустить столбец autoIncrement для записи данных в базу данных MySQL с помощью JDBC Google Apps Script - PullRequest
1 голос
/ 27 октября 2019

Я установил программу Apps Script, и она должна сохранять данные в базе данных. Однако он не работает.

Я пытался использовать код из документации по скрипту 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.

1 Ответ

2 голосов
/ 27 октября 2019

Если столбец 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, ...

Соответственно вам следует удалить первый параметр.

...