BLANTERWISDOM101

JDBC

JDBC

Apps Script dapat terhubung ke basis data eksternal melalui layanan JDBC , pembungkus seputar teknologi Java Database Connectivity standar Layanan JDBC mendukung database Google Cloud SQL , MySQL, Microsoft SQL Server, dan Oracle.
Untuk memperbarui database eksternal dengan JDBC, skrip Anda harus membuka koneksi ke database dan kemudian membuat perubahan dengan mengirimkan pernyataan SQL.

Database Google Cloud SQL

Google Cloud SQL memungkinkan Anda membuat basis data relasional yang hidup di cloud Google. Perhatikan bahwa, tidak seperti Apps Script, Cloud SQL tidak gratis .
Anda dapat membuat instance Google Cloud SQL Generasi Kedua dengan mengikuti langkah-langkah yang tercantum dalam Cloud SQL Quickstart . Jika Anda memiliki instance Generasi Pertama yang ada, Anda dapatmemigrasikannya ke instance Generasi Kedua .

Membuat koneksi Google Cloud SQL

Ada dua cara membangun koneksi dengan database Google Cloud SQL menggunakan layanan JDBC Apps Script :
Metode-metode ini dijelaskan di bawah ini. Keduanya valid, tetapi metode kedua mengharuskan Anda memasukkan daftar rentang IP untuk mengakses daftar putih.
Metode ini membuat koneksi ke instance Google Cloud SQL menggunakan salah satu metode Jdbc.getCloudSqlConnection (url) . URL database memiliki bentuk baik jdbc:google:mysql:subnameataujdbc:google:rdbms:subname, di mana subnameadalah nama koneksi Instance terdaftar di Cloud SQL contoh Ikhtisar halaman di Landasan Konsol Google Cloud .

Menggunakan Jdbc.getConnection (url)

Untuk menggunakan metode ini, Anda harus memasukkan daftar rentang CIDR IP alamat tertentu sehingga server Apps Script dapat terhubung ke database Anda. Sebelum menjalankan skrip Anda, selesaikan langkah-langkah berikut:
  1. Dalam mesin virtual Google Cloud SQL Anda, beri otorisasi rentang IP berikut , satu per satu:
    64.18.0.0/20 64.233.160.0/19 66.102.0.0/20 66.249.80.0/20 72.14.192.0/18 74.125.0.0/16 173.194.0.0/16 207.126.144.0/20 209.85.128.0/17 216.239.32.0/19
  2. Salin URL yang ditugaskan ke basis data Anda; itu harus memiliki formulir jdbc:mysql:subname.
Setelah Anda memasukkan daftar rentang IP ini, Anda dapat membuat koneksi ke instance Google Cloud SQL Anda menggunakan salah satu metode Jdbc.getConnection (url) dan URL yang Anda salin di atas.

Database lain

Jika Anda sudah memiliki database MySQL, Microsoft SQL Server, atau Oracle Anda sendiri, Anda bisa menghubungkannya melalui layanan JDBC Apps Script.

Membuat koneksi basis data lainnya

Untuk membuat koneksi basis data menggunakan layanan JDBC, Anda harus memasukkan daftar rentang IP tertentu dalam pengaturan basis data Anda untuk memungkinkan Apps Script mengaksesnya. Ini adalah rentang alamat yang harus Anda daftar putih:
64.18.0.0 - 64.18.15.255 64.233.160.0 - 64.233.191.255 66.102.0.0 - 66.102.15.255 66.249.80.0 - 66.249.95.255 72.14.192.0 - 72.14.255.255 74.125.0.0 - 74.125.255.255 173.194.0.0 - 173.194.255.255 207.126.144.0 - 207.126.159.255 209.85.128.0 - 209.85.255.255 216.239.32.0 - 216.239.63.255
Setelah daftar putih ini ada, Anda dapat membuat koneksi ke database menggunakan salah satu metodeJdbc.getConnection (url) dan URL basis data Anda.

Kode sampel

Kode sampel di bawah ini mengasumsikan Anda terhubung ke database Google Cloud SQL, dan membuat koneksi database menggunakan metode Jdbc.getCloudSqlConnection (url) . Untuk database lain, Anda harus menggunakan metode Jdbc.getConnection (url) untuk membuat koneksi database.
Untuk informasi lebih lanjut tentang metode JDBC, lihat dokumentasi Java untuk JDBC .

Buat database, pengguna, dan tabel

Sebagian besar pengembang menggunakan alat baris perintah MySQL untuk membuat database, pengguna, dan tabel. Namun, dimungkinkan untuk melakukan hal yang sama di Script Aplikasi, seperti yang ditunjukkan di bawah ini. Merupakan ide bagus untuk membuat setidaknya satu pengguna lain sehingga skrip Anda tidak harus selalu terhubung ke database root.
service / jdbc.gs
// Ganti variabel dalam blok ini dengan nilai nyata. // Anda dapat menemukan "Nama koneksi instan " di Google Cloud // Platform Console, di halaman Ikhtisar Instans . var connectionName = 'Instance_connection_name' ; var rootPwd = 'root_password' ; var user = 'user_name' ; var userPwd = 'user_password' ; var db = 'database_name' ; var root = 'root' ; var instanceUrl = 'jdbc: google: mysql: //' + connectionName ; var dbUrl = instanceUrl + '/' + db ; / **  * Buat database baru dalam contoh Cloud SQL.  * / function createDatabase () { var conn = Jdbc . getCloudSqlConnection ( instanceUrl , root , rootPwd );   samb . createStatement (). mengeksekusi ( 'CREATE DATABASE' + db ); }   / **  * Buat pengguna baru untuk database Anda dengan hak istimewa penuh.  * / function createUser () { var conn = Jdbc . getCloudSqlConnection ( dbUrl , root , rootPwd ); var stmt = samb . prepStatement ( 'BUAT PENGGUNA? DIIDENTIFIKASI OLEH?' );   stmt . setString ( 1 , pengguna );   stmt . setString ( 2 , userPwd );       stmt . mengeksekusi ();   samb . createStatement (). mengeksekusi ( 'GRANT ALL ON `%`. * TO' + pengguna ); } / **  * Buat tabel baru di database.  * / function createTable () { var conn = Jdbc . getCloudSqlConnection ( dbUrl , user , userPwd );   samb . createStatement (). mengeksekusi ( 'BUAT entri TABEL' +         '(guestName VARCHAR (255), konten VARCHAR (255),' + 'entryID INT TIDAK NULL AUTO_INCREMENT, KUNCI UTAMA (entryID));' ); }      

Menulis ke basis data

Contoh di bawah ini menunjukkan cara menulis satu catatan ke database serta kumpulan 500 catatan. Batching sangat penting untuk operasi massal.
Perhatikan juga penggunaan pernyataan parameter, di mana variabel dilambangkan dengan ?Untuk mencegahinjeksi SQL , Anda harus menggunakan pernyataan parameter untuk menghindari semua data yang disediakan pengguna.
service / jdbc.gs
// Ganti variabel dalam blok ini dengan nilai nyata. // Anda dapat menemukan "Nama koneksi instan " di Google Cloud // Platform Console, di halaman Ikhtisar Instans . var connectionName = 'Instance_connection_name' ; var user = 'user_name' ; var userPwd = 'user_password' ; var db = 'database_name' ; var dbUrl = 'jdbc: google: mysql: //' + connectionName + '/' + db ; / **  * Tulis satu baris data ke tabel.  * / function writeOneRecord () { var conn = Jdbc . getCloudSqlConnection ( dbUrl , user , userPwd ); var stmt = samb . nilai prepStatement ( 'INSERT INTO entries' + '(guestName, content) (?,?)' );   stmt . setString ( 1 , 'First Guest' );   stmt . setString ( 2 ,           'Halo, dunia' );   stmt . mengeksekusi (); } / **  * Tuliskan 500 baris data ke sebuah tabel dalam satu batch.  * / function writeManyRecords () { var conn = Jdbc . getCloudSqlConnection ( dbUrl , user , userPwd );   samb . setAutoCommit ( false ); var start = Tanggal baru (); var stmt = samb . mempersiapkan pernyataan       ( 'INSERT INTO entries' + '(guestName, content) nilai (?,?)' ); untuk ( var i = 0 ; i < 500 ; i ++) {     stmt . setString ( 1 , 'Name' + i );     stmt . setString ( 2 , 'Halo, dunia' + i );     stmt . addBatch (); } var batch = stmt .             executeBatch ();   samb . melakukan ();   samb . tutup (); var end = Tanggal baru (); Logger . log ( 'Waktu berlalu:% sms untuk baris% s.' , akhir - mulai , panjang kumpulan . ); }    

Baca dari basis data

Contoh ini menunjukkan cara membaca sejumlah besar catatan dari database, mengulangi hasil yang ditetapkan sebagaimana diperlukan.
service / jdbc.gs
/ **  * Ganti variabel dalam blok ini dengan nilai nyata.  * Anda dapat menemukan "Nama koneksi Instance" di Google Cloud  * Platform Console, di halaman Ikhtisar instance.  * / var connectionName = 'Instance_connection_name' ; var user = 'user_name' ; var userPwd = 'user_password' ; var db = 'database_name' ; var dbUrl = 'jdbc: google: mysql: //' + connectionName + '/' + db ; / **  * Baca hingga 1000 baris data dari tabel dan catat.  * / function readFromTable () { var conn = Jdbc . getCloudSqlConnection ( dbUrl , user , userPwd ); var start = Tanggal baru (); var stmt = samb . createStatement ();   stmt . setMaxRows ( 1000 ); hasil var = stmt . executeQuery (         'SELECT * FROM entries' ); var numCols = hasil . getMetaData (). getColumnCount (); while ( results . next ()) { var rowString = '' ; untuk ( var col = 0 ; col < numCols ; col ++) {       rowString + = hasil . getString ( col + 1 ) + '\ t' ;                 } Logger . log ( rowString ); }   hasil . tutup ();   stmt . tutup (); var end = Tanggal baru (); Logger . log ( 'Waktu berlalu:% sms' , akhir - mulai ); }          

Menutup koneksi

Koneksi JDBC ditutup secara otomatis ketika skrip selesai dijalankan. (Ingatlah bahwa satu google.script.runpanggilan dianggap sebagai eksekusi yang lengkap, bahkan jika halaman layanan HTML yang membuat panggilan tetap terbuka.)
Meskipun demikian, jika Anda tahu Anda selesai dengan koneksi, pernyataan, atau mengatur hasil sebelum akhir script, itu ide yang baik untuk menutup secara manual dengan menelepon JdbcConnection.close(),JdbcStatement.close()atau JdbcResultSet.close().
Menampilkan dialog lansiran atau prompt juga akan mengakhiri koneksi JDBC yang terbuka. Namun, elemen lain yang menampilkan UI — seperti menu atau dialog khusus dan bilah sisi dengan konten khusus — tidak.

0 komentar