JDBC

Apps Script को बाहरी डेटाबेस से कनेक्ट करने के लिए, JDBC सेवा, जो स्टैंडर्ड टेक्नोलॉजी के मुताबिक एक रैपर है Java डेटाबेस कनेक्टिविटी टेक्नोलॉजी. JDBC सेवा, Google Cloud SQL for MySQL, MySQL, और Microsoft SQL के साथ काम करती है सर्वर, और Oracle डेटाबेस.

JDBC के साथ किसी बाहरी डेटाबेस को अपडेट करने के लिए, आपकी स्क्रिप्ट को कोई कनेक्शन खोलना होगा को डेटाबेस में जोड़ सकते हैं और फिर एसक्यूएल स्टेटमेंट भेजकर बदलाव कर सकते हैं.

Google Cloud SQL के डेटाबेस

Google Cloud SQL की मदद से, रिलेशनल डेटाबेस बनाए जा सकते हैं क्लाउड पर काम करता है. ध्यान दें कि Cloud SQL आपके इस्तेमाल के आधार पर शुल्क लग सकता है.

Google Cloud SQL का इंस्टेंस बनाने के लिए, यहां दिया गया तरीका अपनाएं Cloud SQL क्विकस्टार्ट.

Google Cloud SQL के कनेक्शन बनाना

Google Cloud SQL के साथ कनेक्शन बनाने के दो तरीके हैं Apps Script की JDBC सेवा का इस्तेमाल करने वाला डेटाबेस:

इन तरीकों के बारे में नीचे बताया गया है. दोनों मान्य हैं, लेकिन दूसरा तरीका आपके डेटाबेस को ऐक्सेस करने के लिए आईपी रेंज के एक सेट को अनुमति देनी होगी.

यह तरीका Jdbc.getCloudSqlConnection(url) का इस्तेमाल करके, Google Cloud SQL MySQL इंस्टेंस से कनेक्शन बनाता है तरीका. डेटाबेस यूआरएल jdbc:google:mysql://subname का फ़ॉर्म होता है, जिसमें subname, MySQL इंस्टेंस कनेक्शन का नाम होता है Cloud SQL इंस्टेंस खास जानकारी पेज पर दी गई है, जो Google Cloud Console.

Cloud SQL SQL सर्वर से कनेक्ट करने के लिए, Jdbc.getConnection(url) देखें.

Jdbc.getConnection(url) का इस्तेमाल करना

इस तरीके का इस्तेमाल करने के लिए, आपको क्लासलेस इंटर-डोमेन रूटिंग (सीआईडीआर) आईपी पते की रेंज, ताकि Apps Script के सर्वर आपके डेटाबेस से कनेक्ट हो सकें. स्क्रिप्ट चलाने से पहले, नीचे दिया गया तरीका अपनाएं:

  1. आपके Google Cloud SQL के इंस्टेंस में, आईपी रेंज की अनुमति देना, इस डेटा सोर्स से एक-एक करके डेटा सोर्स को अपडेट करें.

  2. अपने डेटाबेस को असाइन किया गया यूआरएल कॉपी करें; उसमें यह होना चाहिए jdbc:mysql:subname फ़ॉर्म.

इन IP सीमाओं को अधिकृत करने के बाद, आप अपने Google Cloud SQL का इंस्टेंस, इनमें से किसी एक का इस्तेमाल करता है Jdbc.getConnection(url) तरीकों और आपके द्वारा ऊपर कॉपी किए गए URL को शामिल करता है.

अन्य डेटाबेस

अगर आपके पास पहले से ही अपना MySQL, Microsoft SQL Server या Oracle डेटाबेस है, तो तो Apps Script की JDBC सेवा के ज़रिए उससे कनेक्ट किया जा सकता है.

अन्य डेटाबेस कनेक्शन बनाना

Apps Script का इस्तेमाल करके, डेटाबेस कनेक्शन बनाने के लिए JDBC सेवा, आपकी डेटाबेस सेटिंग में आपको इस डेटा सोर्स से आईपी रेंज को अनुमति देनी होगी.

अनुमति वाली इन जगहों को लागू करने के बाद, डेटाबेस से कनेक्ट किया जा सकता है किसी एक विकल्प का इस्तेमाल करके Jdbc.getConnection(url) तरीकों और अपने डेटाबेस के यूआरएल की जानकारी दें.

नमूना कोड

नीचे दिया गया सैंपल कोड यह मानता है कि आपको Google Cloud SQL के डेटाबेस से कनेक्ट करना है, और इसका इस्तेमाल करके डेटाबेस कनेक्शन बनाता है Jdbc.getCloudSqlConnection(url) तरीका. अन्य डेटाबेस के लिए, आपको Jdbc.getConnection(url) का तरीका बताया गया है.

JDBC तरीकों के बारे में ज़्यादा जानकारी पाने के लिए, JDBC के लिए Java दस्तावेज़.

डेटाबेस, उपयोगकर्ता, और टेबल बनाना

ज़्यादातर डेवलपर MySQL कमांड-लाइन टूल को डेटाबेस, उपयोगकर्ता, और टेबल बना सकते हैं. हालांकि, ऐसा ही किया जा सकता है जैसा कि नीचे बताया गया है. कम से कम एक वीडियो बनाना बेहतर रहेगा ताकि आपकी स्क्रिप्ट को हमेशा डेटाबेस से इस तरह कनेक्ट न करना पड़े: root.

/**
 * Create a new database within a Cloud SQL instance.
 */
function createDatabase() {
  try {
    const conn = Jdbc.getCloudSqlConnection(instanceUrl, root, rootPwd);
    conn.createStatement().execute('CREATE DATABASE ' + db);
  } catch (err) {
    // TODO(developer) - Handle exception from the API
    console.log('Failed with an error %s', err.message);
  }
}

/**
 * Create a new user for your database with full privileges.
 */
function createUser() {
  try {
    const conn = Jdbc.getCloudSqlConnection(dbUrl, root, rootPwd);

    const stmt = conn.prepareStatement('CREATE USER ? IDENTIFIED BY ?');
    stmt.setString(1, user);
    stmt.setString(2, userPwd);
    stmt.execute();

    conn.createStatement().execute('GRANT ALL ON `%`.* TO ' + user);
  } catch (err) {
    // TODO(developer) - Handle exception from the API
    console.log('Failed with an error %s', err.message);
  }
}

/**
 * Create a new table in the database.
 */
function createTable() {
  try {
    const conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
    conn.createStatement().execute('CREATE TABLE entries ' +
      '(guestName VARCHAR(255), content VARCHAR(255), ' +
      'entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID));');
  } catch (err) {
    // TODO(developer) - Handle exception from the API
    console.log('Failed with an error %s', err.message);
  }
}

डेटाबेस में लिखें

नीचे दिए गए उदाहरणों में, डेटाबेस में सिंगल रिकॉर्ड को साथ ही, 500 रिकॉर्ड का बैच भी होता है. बल्क ऑपरेशन के लिए बैचिंग ज़रूरी है.

पैरामीटर वाले स्टेटमेंट के इस्तेमाल पर भी ध्यान दें, जिसमें वैरिएबल ? से दिखाया गया. बचाव के लिए एसक्यूएल इंजेक्शन अटैक, आपको इनका इस्तेमाल करना चाहिए पैरामीटर वाले स्टेटमेंट का इस्तेमाल करें.

/**
 * Write one row of data to a table.
 */
function writeOneRecord() {
  try {
    const conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);

    const stmt = conn.prepareStatement('INSERT INTO entries ' +
      '(guestName, content) values (?, ?)');
    stmt.setString(1, 'First Guest');
    stmt.setString(2, 'Hello, world');
    stmt.execute();
  } catch (err) {
    // TODO(developer) - Handle exception from the API
    console.log('Failed with an error %s', err.message);
  }
}

/**
 * Write 500 rows of data to a table in a single batch.
 */
function writeManyRecords() {
  try {
    const conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
    conn.setAutoCommit(false);

    const start = new Date();
    const stmt = conn.prepareStatement('INSERT INTO entries ' +
      '(guestName, content) values (?, ?)');
    for (let i = 0; i < 500; i++) {
      stmt.setString(1, 'Name ' + i);
      stmt.setString(2, 'Hello, world ' + i);
      stmt.addBatch();
    }

    const batch = stmt.executeBatch();
    conn.commit();
    conn.close();

    const end = new Date();
    console.log('Time elapsed: %sms for %s rows.', end - start, batch.length);
  } catch (err) {
    // TODO(developer) - Handle exception from the API
    console.log('Failed with an error %s', err.message);
  }
}

डेटाबेस से पढ़ना

यह उदाहरण दिखाता है कि डेटाबेस, ज़रूरत के मुताबिक नतीजे सेट पर लूप में चलती हैं.

/**
 * Read up to 1000 rows of data from the table and log them.
 */
function readFromTable() {
  try {
    const conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
    const start = new Date();
    const stmt = conn.createStatement();
    stmt.setMaxRows(1000);
    const results = stmt.executeQuery('SELECT * FROM entries');
    const numCols = results.getMetaData().getColumnCount();

    while (results.next()) {
      let rowString = '';
      for (let col = 0; col < numCols; col++) {
        rowString += results.getString(col + 1) + '\t';
      }
      console.log(rowString);
    }

    results.close();
    stmt.close();

    const end = new Date();
    console.log('Time elapsed: %sms', end - start);
  } catch (err) {
    // TODO(developer) - Handle exception from the API
    console.log('Failed with an error %s', err.message);
  }
}

कनेक्शन बंद किए जा रहे हैं

जब स्क्रिप्ट का निष्पादन पूरा हो जाता है, तो JDBC कनेक्शन अपने आप बंद हो जाता है. (इसमें रखें ध्यान दें कि एक google.script.run कॉल की गणना एक पूरी निष्पादन के रूप में की जाती है, भले ही वह HTML सेवा पेज जिसने कॉल खुली रहती है.)

फिर भी, अगर आपको पता है कि आपने कनेक्शन, स्टेटमेंट या नतीजे का सेट पूरा कर लिया है तो उन्हें मैन्युअल रूप से बंद करना एक अच्छा विचार रहेगा JdbcConnection.close() JdbcStatement.close(), या JdbcResultSet.close().

चेतावनी या प्रॉम्प्ट वाला डायलॉग दिखाया जा रहा है सभी ओपन JDBC कनेक्शन को भी खत्म कर देता है. हालांकि, यूज़र इंटरफ़ेस (यूआई) को दिखाने वाली अन्य एलिमेंट—जैसे, कस्टम मेन्यू या डायलॉग बॉक्स और साइडबार सामग्री—नहीं.

Google, Google Workspace, और इससे जुड़े निशान और लोगो इनके ट्रेडमार्क हैं Google LLC. दूसरी सभी कंपनियों और प्रॉडक्ट के नाम, कंपनियों के ट्रेडमार्क हैं वे किस तरह के कॉन्टेंट से जुड़े हैं.