Anda di halaman 1dari 7

KONEKSI DATABASE POSTGRESQL DENGAN BAHASA C

MENGGUNAKAN EMBEDDED SQL
Ema Utami dan Suwanto Raharjo

Abstraksi
Database merupakan hal yang tidak dapat dipisahkan dalam dunia
pemograman, baik pemograman script maupun non script.
Penggunaan database untuk menyimpan data hasil operasi dari
program akan memberikan jaminan bahwa data lebih mudah untuk
dimanipulasi, lebih aman dan banyak manfaat lain yang dapat
diambil dengan adanya database. Berbagai sistem database dapat
digunakan mulai yang gratis sampai yang mahal seperti PostgreSQL,
MySQL, Oracle, DB2, Interbase dan lain-lain. Pada tulisan ini tidak
membahas mengenai detail dari sistem database. Penulis akan
membahas mengenai interkoneksi PostgreSQL sebagai database
server dengan C.

1. Mengapa PostgreSQL dan C
Mengapa menggunakan bahasa C, penulis kira merupakan pertanyaan yang tidak
memerlukan jawaban. Bahasa C telah sangat terkenal kehandalannya. PostgreSQL
merupakan salah satu perangkat lunak yang bersifat open source, yang berarti
bahwa kode sumber dari PostgreSQL dapat digunakan secara bebas. Penggunaan
perangkat lunak yang berdifat open source memiliki kelebihan :

1.Biaya - Tidak adanya biaya yang harus dikeluarkan untuk membayar
lisensi.
2.Terbuka - Isi dari perangkat lunak dapat kita lihat secara jelas karena kode
sumbernya disertakan.
3.Kebebasan - Kebebasan untuk merubah isi dari perangkat lunak dapat
dilakukan.
4.Keamanan - Update masalah keamanan (jika terjadi) akan lebih cepat.

PostgreSQL merupakan Object Relational Database Management System (ORDMS)
yang bersifat open source yang mendukung Standard Query Language (SQL)
dengan kemampuan antara lain trasactions, subqueries, triggers dan lain-lain.
PostgreSQL juga menyediakan antarmuka untuk berbagai bahasa seperti Python, C,
C++, java, Perl, PHP dan Tcl. Sebagai salah satu database server yang bersifat
open source maka PostgreSQL sering dibandingkan dengan database server yang
bersifat open source lainya yakni MySQL. Perbandingan antara PostgreSQL dan

Librari ini secara garis besar dapat melakukan : * Melakukan koneksi dan menjaga koneksi PostgreSQL * Mengesekusi perintah SQL * Membaca hasil dari query SQL Namun penggunaan librari libpq secara langsung dengan menuliskan ke dalam kode sumber bahasa C cukup merepotkan. Koneksi menggunakan bahasa C dapat digunakan sebuah librari libpq.org. PostgreSQL memiliki kecepatan yang lebih dibanding MySQL pada suatu situs yang sering diakses (Perdue. PostgreSQL sampai artikel ini ditulis telah sampai pada versi 7.MySQL telah dilakukan oleh beberapa orang dengan hasil bahwa PostgreSQL mampu melewati test Atomicity Consistency Isolation Durability (ACID) sedangkan MySQL tidak (Jepson. Disini tidak akan dibahas mengenai instalasi dari PostgreSQL. PostgreSQL dapat diinstall melalui paket biner yang disertakan oleh masing-masing distribusi GNU Linux ataupun dengan mengkompile kode sumbernya yang dapat diambil di situs www.4. Translator ini .3 yang diinstall pada pada sistem operasi GNU Linux distrubusi Slackware 8.0 kernel 2.19. 2001). Oracle dan Informix juga memiliki PROC dan ESQLC sebagai translator sedangkan traslator yang dimiliki PostgreSQL adalah ecpg. bagi yang belum menginstall silahkan dibaca petunjuk pengistallan yang disertakan dalamkode sumber PostgreSQL. Sehingga akan lebih mudah jika ada sebuah transaltor (embedded SQL) yang menerjemahkan kode SQL ke kode C. ANSI juga meratifikasi sebuah standart embedded SQL untuk Java yaitu SQLJ pada tahun 1988. 2. Embedded SQL Koneksi ke PostgreSQL dapat dilakukan dengan berbagai macam cara baik secara grafis melalui pgAdmin maupun melalui text dengan psql. ADA dan lain-lain. Banyak sistem database khususnya yang komersial mendukung konsep embedded SQL.postgresql.3. PostgreSQL juga mendukung sebuah translator sehingga kita dapat menuliskan perintah SQL yang di"embeddedkan" dalam C yang akan diterjemahkan kedalam librari libpq. 2001). PostgreSQL juga memiliki kemampuan Multi-Version Concurrency Control dimana PostgresSQL mampu melakukan hot backup dan lain-lain (Mitchel. Traslator ecpg akan menterjemahkan perintah SQL ke dalam kode sumber bahasa C. Penulis menggunakan PostgreSQL versi 7. Standart SQL92 menyebutkan bahwa banyak bahasa pemograman selain C yang mendukung embedded SQL seperti FOTRAN. 2001).

pgc dengan nama kode sumber program test dan ekstensi .Koneksi Ke PostgreSQL Statement berikut dapat digunakan untuk melalukan koneksi ke database PostgreSQL dengan nama database test yang dipunyai orang yang sedang menjalankan program dan database tersebut tanpa password. EXEC SQL CONNECT to kelurahan AS koneksi USER ema USING naufal. pico. Untuk menulis program yang akan diterjemahkan dalam bahasa C maka kode sumber program harus mempunyai ekstensi . EXEC SQL connect to test.Menggunakan ecpg Seperti yang disebut di atas bahwa fungsi ecpg adalah menterjemahkan perintah SQL ke dalam bentuk bahasa C. 4. Penulisan dapat menggunakan text editor favorit pembaca. Contoh adalah test.pgc .pgc . Berikut struktur dari statemen yang digunakan untuk melakukan qery SQL. Statemen yang lebih detail mencakup nama pemilik database dan passwordnya adalah sebagai berikut. Melakukan Query SQL Pada dasarnya statemen yang digunakan dalam ecpg untuk melakukan qery SQL tidak berbeda dengan perintah SQL pada umumnya. vi. 3. hanya ada sedikit tambahan untuk menyimpan hasil query ke dalam variabel yang telah ditetukan. silahkan di cek apakah telah terinstall dengan menjalankan perintah ecpg pada shell prompt. GNUemacs. Jadi misalkan dipunyai database kelurahan dan nama pemilik ema serta passwordnya adalah naufal maka statemen yang dapat dibuat untuk melakukan koneksi adalah sebagai berikut. nano atau yang lainya.merupakan bawaan dari PostgreSQL. Penulis menggunakan vi dan gvim sebagai editor favorit. EXEC SQL connect to nama_database AS nama_koneksi USER nama_user USING kata_kunci. .

void AdaSalah() { fprintf(stderr. Deklarasi Variabel Deklarasi Variabel Contoh statemen berikut merupakan query SQL sederhana. 5. "Ada Kesalahan yang mungkin terjadi\n"). /*praprosesor standart Input Output */ #include <stdio. Program ini menggunakan nama database kelurahan.Statemen query SQL printf("Jumlah Kepala Keluarga %d\n". <--. <--. } /* Fungsi main yang berisi statemen koneksi ke PostgreSQL */ /* QUERY SQL dan menampilkan outputnya */ int main () { .Deklarasi variabel EXEC SQL end declare section. Contoh Program Sederhana Berikut contoh program sederhana yang digunakan untuk melakukan koneksi. <--. EXEC SQL whenever sqlerror do AdaSalah(). sqlprint().h> /*Perintah untuk menampilkan pesan kesalahan secara otomatis */ EXEC SQL whenever sqlwarning sqlprint.Perintah umum bahasa C . int jkk. jkk+1). Pada database ini ada beberapa tabel diantaranya tabel kk dan pribadi. EXEC SQL begin declare section. EXEC SQL SELECT MAX(no_kepkel) into :jkk FROM kk. nama pemilik ema dan password naufal. Adapun listingnya adalah sebagai berikut. melakukan query SQL SELECT dan menampilkan hasil output ke dalam standart output.

jbal). jper. /* Melakukan query SQL dan menyimpan hasilnya dalam variabel */ EXEC SQL SELECT MAX(no_kepkel) into :jkk FROM kk. jlaki.pgc maka dengan menggunakan ecpg dapat digunakan untuk merubah menjadi kode sumber C. Translasi dan Kompilasi Setelah program di atas ditulis dan diberinama misalkan contoh. jper). /* Koneksi sistem database */ EXEC SQL CONNECT to kelurahan AS koneksi USER ema USING naufal. 6. EXEC SQL SELECT COUNT(*) into :jbal FROM pribadi WHERE (date_part('year'. EXEC SQL end declare section. /* Memutuskan koneksi */ EXEC SQL disconnect ALL. EXEC SQL SELECT COUNT(*) into :jpend FROM pribadi.pgc Setelah dilakukan perintah tersebut maka akan terbentuk kode sumber C dengan .pgc wa2n@server:~/artikel$ ecpg contoh. printf("Jumlah Penduduk BALITA %d\n". jkk+1). adapun perintah untuk melakukan translasi adalah sebagai berikut : wa2n@server:~/artikel$ ls contoh. int jkk. EXEC SQL SELECT COUNT(*) into :jlaki FROM pribadi WHERE jk='L'. jlaki).now()) . /* Menampilkan hasil ke standart output */ printf("Jumlah Kepala Keluarga %d\n". jpend. EXEC SQL SELECT COUNT(*) into :jper FROM pribadi WHERE jk='P'.date_part('year' tgl_lahir)) <= 5. jpend). jbal./* Deklarasi Variabel */ EXEC SQL begin declare section. printf("Jumlah Penduduk %d\n". printf("Jumlah Penduduk Laki-laki %d\n". printf("Jumlah Penduduk Perempuan %d\n".

transaksi dan lain sebagainya. Namun penulis mengharap tulisan ini dapat berguna bagi pembaca. banyak yang belum tercakup seperti cursors.onlamp. Technical report.html . gcc -o nama_hasil_program kode_sumber. B./contoh Jumlah Kepala Keluarga 151 Jumlah Penduduk Laki-laki 243 Jumlah Penduduk Perempuan 203 Jumlah Penduduk BALITA 117 Jumlah Penduduk 446 wa2n@server:~/artikel$ 7.c -I /usr/local/psql/include -L /usr/local/psql/lib -lecpg -lpq Letak path dari opsi -L dan -I mungkin berbeda tergantung dari direktori include dan lib PostgreSQL.c contoh. J.webtecniques.c wa2n@server:~/artikel$ ls contoh. (2001).com/pub/a/onlamp/2001/05/25/postgresql_mvcc.c di atas maka dapat dilakukan.pgc Setelah menjadi kode sumber C maka dapat dilakukan kompilasi dengan perintah.com/archieves/2001/09/jepson/ Mitchel.c contoh. Penutup Demikianlah sedikit tulisan dari saya yang masih sederhana.c -I /usr/local/pgsql/include/ -L /usr/local/pgsql/lib/ -lecpg -lpq Setelah kompilasi maka akan dihasilkan sebuah file biner contoh. wa2n@server:~/artikel$ ls contoh* contoh. Daftar Pustaka Jepson. Webtecniques.pgc wa2n@server:~/artikel$ . www. www.`Postgresql's multi-version concurrency control'. (2001) Postgesql vs mysql. wa2n@server:~/artikel$ gcc -o contoh contoh. Untuk program contoh. dan dapat dijalankan sebagai berikut.nama contoh.

phpbuilder.php3 . (2001)`Open source databases : As the tables turn'. T.Perdue.com/columns/tim20001112. www.