Topik ini menjelaskan cara menggunakan driver PolarDB .NET dalam aplikasi C# untuk menghubungkan ke database .
Prasyarat
-
Anda telah membuat akun database di kluster PolarDB. Untuk informasi selengkapnya, lihat Create a database account.
-
Alamat IP host yang perlu mengakses kluster PolarDB telah ditambahkan ke daftar putih. Untuk informasi selengkapnya, lihat Set a cluster whitelist.
Informasi latar belakang
PolarDB .NET, juga dikenal sebagai ADO.NET Data Provider for PolarDB, adalah driver untuk mengakses PolarDB menggunakan bahasa seperti C#, Visual Basic, dan F#. Driver ini kompatibel dengan Entity Framework Core dan Entity Framework 6.x, sehingga dapat mempercepat pengembangan aplikasi saat digunakan bersama Entity Framework.
Driver ini menggunakan protokol PostgreSQL versi 3.0 dan kompatibel dengan .NET Framework 2.0, .NET Framework 4.0, .NET Framework 4.5, serta .NET Core 2.0.
Pada versi sebelumnya driver PolarDB .NET, banyak nama kelas diawali dengan POLARDB. Awalan tersebut kini telah diubah menjadi PolarDB. Anda perlu memperbarui kode dengan mengganti awalan lama tersebut. Logika driver tetap tidak berubah, sehingga peningkatan dapat dilakukan dengan percaya diri.
Entity Framework
Penggunaan Entity Framework dan Language-Integrated Query (LINQ) dapat secara signifikan mempercepat pengembangan aplikasi backend C#.
Driver PolarDB .NET menyediakan file .dll untuk EF5 dan EF6 guna digunakan bersama Entity Framework.
Untuk informasi lebih lanjut tentang Entity Framework, kunjungi situs resmi Entity Framework.
Instal driver .NET
Unduh driver .NET.
Ekstrak paket driver .NET.
unzip polardb_oracle_.net.zipImpor driver ke dalam proyek Visual Studio Anda.
Di Visual Studio, klik kanan proyek dan pilih Add Reference.
Di kotak dialog Reference Manager, klik Browse.

Di kotak dialog Select the files to reference, pilih versi driver yang sesuai dan klik Add.

Klik OK.
Contoh
Direktori Samples berisi file PolarDBSample.sql dan beberapa proyek contoh. Langkah-langkah berikut menunjukkan cara menjalankan proyek contoh tersebut.
Hubungkan ke database. Untuk informasi selengkapnya, lihat Connect to a database cluster.
Jalankan perintah berikut untuk membuat database bernama
sampledb.CREATE DATABASE sampledb;Impor skema dan data contoh ke dalam database
sampledb.\i ${your path}/PolarDBSample.sqlSetelah data diimpor, Anda dapat mulai menulis kode C#.
Kode contoh berikut menunjukkan cara melakukan kueri, pembaruan, dan pemanggilan prosedur tersimpan.
using System; using System.Data; using PolarDB.PolarDBClient; /* * Kelas ini menunjukkan cara melakukan operasi DML di PolarDB. * * @revision 1.0 */ namespace PolarDBClientTest { class SAMPLE_TEST { static void Main(string[] args) { PolarDBConnection conn = new PolarDBConnection("Server=localhost;Port=5432;User Id=polaruser;Password=password;Database=sampledb"); try { conn.Open(); // Pernyataan select sederhana menggunakan objek PolarDBCommand PolarDBCommand PolarDBSeletCommand = new PolarDBCommand("SELECT EMPNO,ENAME,JOB,MGR,HIREDATE FROM EMP",conn); PolarDBDataReader SelectResult = PolarDBSeletCommand.ExecuteReader(); while (SelectResult.Read()) { Console.WriteLine("Emp No" + " " + SelectResult.GetInt32(0)); Console.WriteLine("Emp Name" + " " + SelectResult.GetString(1)); if (SelectResult.IsDBNull(2) == false) Console.WriteLine("Job" + " " + SelectResult.GetString(2)); else Console.WriteLine("Job" + " null "); if (SelectResult.IsDBNull(3) == false) Console.WriteLine("Mgr" + " " + SelectResult.GetInt32(3)); else Console.WriteLine("Mgr" + "null"); if (SelectResult.IsDBNull(4) == false) Console.WriteLine("Hire Date" + " " + SelectResult.GetDateTime(4)); else Console.WriteLine("Hire Date" + " null"); Console.WriteLine("---------------------------------"); } // Menjalankan pernyataan INSERT menggunakan objek PolarDBCommand. SelectResult.Close(); PolarDBCommand PolarDBInsertCommand = new PolarDBCommand("INSERT INTO EMP(EMPNO,ENAME) VALUES((SELECT COUNT(EMPNO) FROM EMP),'JACKSON')",conn); PolarDBInsertCommand.ExecuteScalar(); Console.WriteLine("Catatan dimasukkan"); // Memperbarui catatan menggunakan objek PolarDBCommand. PolarDBCommand PolarDBUpdateCommand = new PolarDBCommand("UPDATE EMP SET ENAME ='DOTNET' WHERE EMPNO < 100",conn); PolarDBUpdateCommand.ExecuteNonQuery(); Console.WriteLine("Catatan telah diperbarui"); PolarDBCommand PolarDBDeletCommand = new PolarDBCommand("DELETE FROM EMP WHERE EMPNO < 100",conn); PolarDBDeletCommand.CommandType= CommandType.Text; PolarDBDeletCommand.ExecuteScalar(); Console.WriteLine("Catatan dihapus"); // Contoh pemanggilan prosedur try { PolarDBCommand callable_command = new PolarDBCommand("emp_query(:p_deptno,:p_empno,:p_ename,:p_job,:p_hiredate,:p_sal)", conn); callable_command.CommandType = CommandType.StoredProcedure; callable_command.Parameters.Add(new PolarDBParameter("p_deptno",PolarDBTypes.PolarDBDbType.Numeric,10,"p_deptno",ParameterDirection.Input,false ,2,2,System.Data.DataRowVersion.Current,20)); callable_command.Parameters.Add(new PolarDBParameter("p_empno", PolarDBTypes.PolarDBDbType.Numeric,10,"p_empno",ParameterDirection.InputOutput,false ,2,2,System.Data.DataRowVersion.Current,7369)); callable_command.Parameters.Add(new PolarDBParameter("p_ename", PolarDBTypes.PolarDBDbType.Varchar,10,"p_ename",ParameterDirection.InputOutput,false ,2,2,System.Data.DataRowVersion.Current,"SMITH")); callable_command.Parameters.Add(new PolarDBParameter("p_job", PolarDBTypes.PolarDBDbType.Varchar,10,"p_job",ParameterDirection.Output,false ,2,2,System.Data.DataRowVersion.Current,null)); callable_command.Parameters.Add(new PolarDBParameter("p_hiredate", PolarDBTypes.PolarDBDbType.Date,200,"p_hiredate",ParameterDirection.Output,false ,2,2,System.Data.DataRowVersion.Current,null)); callable_command.Parameters.Add(new PolarDBParameter("p_sal", PolarDBTypes.PolarDBDbType.Numeric,200,"p_sal",ParameterDirection.Output,false ,2,2,System.Data.DataRowVersion.Current,null)); callable_command.Prepare(); callable_command.Parameters[0].Value = 20; callable_command.Parameters[1].Value = 7369; PolarDBDataReader result = callable_command.ExecuteReader(); int fc = result.FieldCount; for(int i=0;i<fc;i++) Console.WriteLine("RESULT["+i+"]="+ Convert.ToString(callable_command.Parameters[i].Value)); result.Close(); } // Jika Anda menggunakan driver .NET 2.0, Anda harus memodifikasi bagian ini sesuai kebutuhan. catch(PolarDBException exp) { if(exp.ErrorCode.Equals("01403")) Console.WriteLine("Data tidak ditemukan"); else if(exp.ErrorCode.Equals("01422")) Console.WriteLine("Beberapa baris dikembalikan oleh kueri"); else Console.WriteLine("Terjadi kesalahan saat memanggil prosedur. \nPenyebab Utama:\n"); Console.WriteLine(exp.Message.ToString()); } // Pernyataan terpersiapkan (prepared statement) string updateQuery = "update emp set ename = :Name where empno = :ID"; PolarDBCommand Prepared_command = new PolarDBCommand(updateQuery, conn); Prepared_command.CommandType = CommandType.Text; Prepared_command.Parameters.Add(new PolarDBParameter("ID", PolarDBTypes.PolarDBDbType.Integer)); Prepared_command.Parameters.Add(new PolarDBParameter("Name", PolarDBTypes.PolarDBDbType.Text)); Prepared_command.Prepare(); Prepared_command.Parameters[0].Value = 7369; Prepared_command.Parameters[1].Value = "Mark"; Prepared_command.ExecuteNonQuery(); Console.WriteLine("Catatan Diperbarui..."); } catch(PolarDBException exp) { Console.WriteLine(exp.ToString() ); } finally { conn.Close(); } } } }
Parameter string koneksi
Aplikasi menghubungkan ke database dengan menyediakan string koneksi yang mencakup parameter seperti host, username, dan password.
String koneksi menggunakan format keyword1=value; keyword2=value; dan tidak peka huruf besar/kecil. Gunakan tanda kutip ganda ("") untuk membungkus nilai yang mengandung karakter khusus, seperti titik koma.
Tabel berikut menjelaskan parameter string koneksi yang didukung oleh driver ini.
Tabel 1. Parameter koneksi dasar
Parameter | Contoh | Deskripsi |
Host |
| Titik akhir kluster PolarDB. Untuk informasi selengkapnya tentang cara melihat titik akhir, lihat View or apply for an endpoint. |
Port |
| Port kluster PolarDB. Nilai default-nya adalah 1521. |
Database |
| Nama database yang akan dihubungkan. |
Username |
| Username untuk kluster PolarDB. |
Password |
| Password untuk pengguna yang ditentukan pada kluster PolarDB. |
Tabel 2. Parameter kolam koneksi
Parameter | Contoh | Deskripsi |
Pooling |
| Menentukan apakah kolam koneksi diaktifkan. |
Minimum pool size | 0 | Jumlah minimum koneksi yang dipertahankan dalam kolam koneksi. |
Maximum pool size | 100 | Jumlah maksimum koneksi yang diizinkan dalam kolam koneksi. |
Connection idle lifetime | 300 | Periode timeout, dalam detik, untuk menutup koneksi yang tidak aktif ketika jumlah koneksi melebihi minimum pool size. |
Connection pruning interval | 10 | Interval, dalam detik, untuk pemangkasan koneksi yang tidak aktif. |
Tabel 3. Parameter lainnya
Parameter | Deskripsi |
application_name | Nama aplikasi. |
search_path | Jalur pencarian skema. |
client_encoding | Pengkodean karakter yang digunakan oleh klien. |
timezone | Zona waktu untuk sesi saat ini. |