2017-02-14 11 views
2

Платформа: Скриншот Google Apps, подключающийся к SQL Server с использованием службы JDBC.Получить идентификатор последней вставленной строки в скрипте Google Apps

Как получить идентификатор (id) вставленной строки? (код представлен ниже) Я считаю, что решение находится здесь: https://stackoverflow.com/a/42655/3520117, но я изо всех сил пытаюсь реализовать это общее решение в Google Apps Script с помощью службы JDBC.

Code.gs:

function postNewItem(formObject) { 

    var useremail = Session.getActiveUser().getEmail(); 

    var timeZone = CalendarApp.getDefaultCalendar().getTimeZone(); 
    var timestamp = Utilities.formatDate(new Date(), timeZone, "yyyyMMdd HH:mm:ss"); // get current date/time 

    var conn = Jdbc.getConnection(connParams); 
    var stmt = conn.prepareStatement('INSERT INTO tblOne ' 
     + '(email, timestamp, var1, var2, var3) ' 
     + 'values (?, ?, ?, ?, ?)'); 
    stmt.setString(1, useremail); 
    stmt.setString(2, timestamp); 
    stmt.setString(3, formObject.var1); 
    stmt.setString(4, formObject.var2); 
    stmt.setString(5, formObject.var3); 

    stmt.execute(); 
    conn.commit(); 
    conn.close(); 

    // log event 
    logEvent(id, "N/A", "New item added.", useremail); 
} 
+1

Возможный дубликат [Как получить вставить ID в JDBC] (http://stackoverflow.com/questions/1915166/how-to-get-the-insert-id-in-jdbc) –

+0

Марк, это похоже, но distinc так как это зависит от реализации Google драйвера JDBC, который они используют с помощью скрипта Google Apps. Их документация не ссылается на эту функцию, плюс пример кода, с которым вы связаны, - это Java и Google Apps Script использует javascript на стороне сервера. – h0dges

+0

Я уверен, что реализация JDBC для скриптов Google Apps поддерживает это. выполнения (SQL, autoGeneratedKeys) https://developers.google.com/apps-script/reference/jdbc/jdbc-prepared-statement#execute(String,Integer) getGeneratedKeys() https: // разработчикам .google.com/apps-script/reference/jdbc/jdbc-statement # getgeneratedkeys Помощь! – h0dges

ответ

2

решаемая. Я размещаю это здесь, чтобы помочь кому-то еще, кто борется с этим.

Шаги:

  1. Добавить autoGeneratedKeys флаг

    var stmt = conn.prepareStatement(query, 1);

  2. Получить список авто сгенерированных ключей

    var results = stmt.getGeneratedKeys();

  3. Get ID:

    while (results.next()) { var id = results.getInt(1); }

Полный пример:

Code.gs:

function postNewItem(formObject) { 

    var useremail = Session.getActiveUser().getEmail(); 

    var timeZone = CalendarApp.getDefaultCalendar().getTimeZone(); 
    var timestamp = Utilities.formatDate(new Date(), timeZone, "yyyyMMdd HH:mm:ss"); // get current date/time 

    var conn = Jdbc.getConnection(connParams); 
    var stmt = conn.prepareStatement('INSERT INTO tblOne ' 
     + '(email, timestamp, var1, var2, var3) ' 
     + 'values (?, ?, ?, ?, ?)', 1); // added autoGeneratedKeys flag 
    stmt.setString(1, useremail); 
    stmt.setString(2, timestamp); 
    stmt.setString(3, formObject.var1); 
    stmt.setString(4, formObject.var2); 
    stmt.setString(5, formObject.var3); 

    stmt.execute(); 

    // start of additional code 
    var results = stmt.getGeneratedKeys(); 

    while (results.next()) { 
    var id = results.getInt(1); 
    } 

    Logger.log(id); 
    // end of additional code 

    conn.commit(); 
    conn.close(); 

    // log event 
    logEvent(id, "N/A", "New item added.", useremail); 
+0

В обычном JDBC возможные значения: 'Statement.RETURN_GENERATED_KEYS' (=' 1') и 'Statement.NO_GENERATED_KEYS' (=' 2'). –

 Смежные вопросы

  • Нет связанных вопросов^_^