Tampilkan postingan dengan label Database. Tampilkan semua postingan
Tampilkan postingan dengan label Database. Tampilkan semua postingan

Rabu, 27 September 2017

Menghitung Pengunjung Online Dengan PHP dan SQLite

Jika anda memiliki website besar, anda pasti merasa percaya diri untuk menampilkan jumlah pengunjung online di website anda. Jangan biarkan trafik anda turun gara-gara loading halaman lambat. Perlu diketahui bahwa salah satu penyebab lambatnya loading website adalah terlalu banyak menggunakan script yang berjalan pada client-side (mis: javascript). Selain itu, terlalu banyak melakukan query database juga menyebabkan lambatnya loading website.

Umumnya, website kelas personal (blog) masih menampilkan jumlah pengunjung online / online visitor count dengan layanan counter gratis; misalnya seperti supercounters.com. Tanpa disadari, hal ini sangat empengaruhi waktu loading halaman web. Apalagi layanan seperti itu memiliki banyak user yang menginginkan jumlah pengunjung online dalam waktu yang sama. Ini membuat beban server penyedia online visitor counter lebih berat dan berimbas pada waktu load website anda sendiri.

Jika anda memiliki hosting sendiri, lebih baik anda membuat online visitor counter sendiri. Tapi jika tidak punya, ada banyak hosting gratis bisa anda coba; misalnya 3owl.com.

Membuat online visitor counter sendiri memang agak merepotkan. Tapi jika melihat script visitor counter yang bekerja dengan SQLite, membuat online visitor counter sendiri perlu dipertimbangkan. Ini karena, menurut beberapa referensi, SQLite mampu bekerja lebih cepat dalam mengolah database (link referensi). Jadi, memasang online visitor counter berbasis SQLite bisa dipastikan akan mempengaruhi waktu loading halaman web anda.

counter.php
Kode berikut ini adalah inti utama dari proses perhitungan pengunjung online. Setiap pengunjung yang mengakses website dibedakan berdasarkan alamat IP. Adapun tahapan proses yang dilakukan oleh kode ini adalah
- Memperoleh alamat IP pengunjung ($ip)
- Memperoleh waktu akses pengunjung ($curtime)
- Memperoleh waktu 3 menit yag lalu ($lowtime)
- Memeriksa apakah online.db sudah dibuatkan tabel 'counter'. Jika belum ada, buat!
  $db->exec("CREATE TABLE IF NOT EXISTS `counter` ...
- Memasukkan $ip dan $curtime pengunjung ke database  jika belum ada. Jika sudah ada, update kolom lastaccess dengan $curtime.
  $db->exec("INSERT OR REPLACE INTO counter ...
- Menghapus data pengunjung yang sudah 3 menit tidak melakukan aktivitas:
  $db->exec("DELETE FROM counter WHERE lastvisit < '$lowtime'");
- Menghitung jumlah pengunjung yang sedang aktif dalam kurun waktu 3 menit terakhir
  $res = $db->query("SELECT COUNT(ip) AS count from counter");

<?php
function get_online(){
 $ip = $_SERVER['REMOTE_ADDR'];
 $curtime = date("Y-m-d H:i:s");
 $lowtime = date("Y-m-d H:i:s", strtotime("-3 minutes"));

 $db = new SQLite3(dirname(__FILE__)."/online.db");
 $db->exec("CREATE TABLE IF NOT EXISTS `counter` (
   `ip` varchar(60) NOT NULL,
   `lastvisit` DATETIME NOT NULL,
   UNIQUE(`ip`)
 )");

 $db->exec("INSERT OR REPLACE INTO counter (ip,lastvisit) VALUES('$ip','$curtime')");
 $db->exec("DELETE FROM counter WHERE lastvisit < '$lowtime'");
 $res = $db->query("SELECT COUNT(ip) AS count from counter");
 $row = $res->fetchArray();
 return $row['count'];
}
?>

online.php
Kode ini akan mencetak angka dari counter.php
<?php
include 'counter.php';
echo get_online();
?>

Di halaman anda
Di setiap halaman anda, patikan anda menyisipkan kode ini di sekitar tag <body>. Jumlah pengunjung online akan diperoleh dari online.php dan dicetak pada elemen <div id='online'></div>.
...
<div id='online'></div>
<script>
 var xmlHttp = new XMLHttpRequest();
 xmlHttp.onreadystatechange = function() { 
  if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
   document.getElementById('online').innerHTML = xmlHttp.responseText + " pengguna online";
  }
 }
 xmlHttp.open("GET", "http://DOMAIN-ANDA.com/online.php", true);
 xmlHttp.send(null);
</script>
...


Hasilnya
Saya sudah mencoba kode ini di localhost dan di website saya sendiri (link). Hasil screenshot di localhost terlihat seperti berikut:

Yap, itu tadi adalah sedikit tutorial singkat mengenai cara menghitung jumlah pengunjung online atau yang biasa disebut sebagai online visitor counter. Mudah-mudahan bermanfaat.
Read more

Selasa, 05 September 2017

Cara Caching Hasil API Dari Web Service Dengan Database MySQL


Beberapa website yang menyediakan katalog data untuk umum biasanya menyediakan API (Application Programming Interface) agar semua datanya bisa diambil oleh implementor.

Akan tetapi, ada beberapa hal sepele yang perlu menjadi sorotan perhatian. Contohnya saja pada pengaplikasian Youtube grabber. Ada batasan kueri API dalam jumlah tertentu yang perlu diketahui. Kalaupun tidak ada, seorang programmer sebaiknya memiliki etika dalam menggunakan API dari web service gratisan. Layanan gratis sudah sepantasnya digunakan secara bijak, dalam kurung tidak boleh membebani server.

Atas dasar itulah, penting untuk menyediakan fitur caching dalam pengaksesan API, sehingga kueri yang sering diminta tidak melulu dikirim ulang secara sekuential dalam kurun waktu yang tidak jauh berbeda.

Cara termudah untuk mengimplementasikan API caching adalah dengan memanfaatkaan database. Pada penjelasan kali ini, saya menggunakan database berbasis MySQL.

CREATE TABLE `api_cache` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `kode` varchar(200) NOT NULL,
 `data` mediumtext NOT NULL,
 `total_akses` int(11) NOT NULL,
 `waktu_input` datetime NOT NULL,
 `akses_terakhir` datetime NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `kode` (`kode`)
);


Struktur database di atas terdiri atas elemen-elemen penting dalam mendukung proses caching. Kolom kode adalah kode identifikasi API, bisa berupa URL unik ataupun katakunci yang berkaitan dengan data yang sudah tersimpan. Kolom data menyimpan hasil kueri API; jenisnya tergantung kebutuhan; bisa TEXT, MEDIUMTEXT ataupun LONGTEXT. waktu_input adalah waktu saat pertama kali data hasil kueri diinput ke database. Terakhir yang tidak alah penting; total_akses dan akses terakhir yang nantinya berguna bagi admin, ketika database berlebihan kapasitas. Kedua kolom ini bisa diseleksi nilainya untuk mengetahui data yang tidak begitu sering diakses ulang.

Sekarang, saatnya implementasi (Maaf, kode ini implementasi ditulis berdasarkan gaya CodeIgniter; namun lumayan mudah untuk diterjemahkan ke kode PHP native, kok).

Sebelum mengakses API, program harus memeriksa apakah hasil kueri API sejenis sudah pernah diinputkan ke dalam database.

public function ambil($kode){
        $this->db->where('kode', $kode);
        $query = $this->db->get('api_cache');
        if($query->num_rows() != 0){
            $hasil = $query->row();
            $this->db->where('id', $hasil->id);
            $this->db->set('total_akses', 'total_akses+1', FALSE);
            $this->db->set('akses_terakhir', '"'.date("Y-m-d H:i:s", time()).'"', FALSE);
            $this->db->update('api_cache');
            return $hasil->data;
        }
        return NULL;
    }


Apabila data belum pernah dimasukkan, fungsi di atas akan mengembalikan nilai NULL. Ini juga berarti bahwa API bisa dieksekusi langsung.

Tugas belum selesai, hasil data eksekusi API, harus segera dimasukkan ke dalam database. Sehingga, dilain waktu, apabila kueri serupa dieksekusi, program hanya perlu mengambil data dari database. Bukan hanya tidak merugikan server yang memberikan layanan web service, dengan cara ini, eksekusi kode jauh lebih cepat.

public function tambah($kode,$data){
        $this->kode = $kode;
        $this->data = $data;
        $this->total_akses = 0;
        $this->waktu_input = date("Y-m-d H:i:s", time());
        $this->akses_terakhir = date("Y-m-d H:i:s", time());
        $this->db->insert('api_cache',$this);
    }


Selamat mencoba :)
Read more

Memperoleh Database Klasifikasi Makhluk Hidup Dengan CatalogueOfLife Web Service API


Blogging bisa jadi membosankan apabila kita sudah kehabisan ide untuk ditulis sebagai postingan baru. Jika kalian merasa demikian, coba ikuti ide saya.

Setelah lama terjun dalam dunia blogging, rupanya pundi rupiah masih tak kunjung penuh untuk memenuhi hasrat keinginan sehari-hari. Sehingga saya mulai bereksperimen membuat mesin pencari konten LOMBA ASIA. Saya akhirnya sadar, ada cara lebih mudah untuk menghasilkan pemasukan pasif dari internet.

Keluar dari tema lomba, saya berusaha menemukan ide konten yang mudah diperoleh untuk dipublikasikan kembali. Bertemulah saya dengan web fishbase.org dan catalogueoflife.org. Dari kedua objek itu, saya akhirnya memilih catalogueoflife.org dan segera mempelajari API web service-nya. Usaha tersebut begitu berat, tapi semua terbayarkan setelah http://namalatin.web.id selesai saya rilis.

Saya tidak akan membagikan source kode web nama latin tersebut, tapi setidaknya kali ini kalian akan mempelajari bagaimana memperoleh data dari catalogueoflife.org dari saya. Soal pengolahan dan sisanya, silahkan pelajari sendiri, ya. hehe :D

Jika ada yang belum jelas dari tutorial ini, silahkan baca dokumentasinya sendiri dari link berikut: http://www.catalogueoflife.org/annual-checklist/2017/webservice

Data spesies makhluk hidup dapat dicari dari titik pusat web service catalogueoflife.org; dan diikuti dengan parameter request berisi data yang ingin dicari. Parameter tersebut antara lain:
name             Kata kunci yang ingin dicari, mialnya "ikan", "singa", "Oreochromis niloticus" atau "tiger"
id                  Data spesies yang ingin diperoleh berdasarkan ID record spesifik. Gunakan ini, setelah kita mencari data dengan parameter name dan ingin memperoleh informasi detail dari tiap nama yang ditemukan. Tiap nama yang ditemukan akan memiliki ID unik.
format           Format hasil yang ingin anda peroleh. Anda bisa memilih nilai berikut: format=xml, format=json (default) dan format=php;
response       Tipe hasil yang diperoleh. Konfigurasi yang valid adalah response=terse (default) dan response=full. Format terse akan mengembalikan data rinci,sementara format full akan mengembalikan data lengkap. Perbedaan detailnya, silahkan baca referensi link diatas.
start               Record pertama yang harus dikembalikan. Misalnya, kata kunci "ikan" ditemukan hasil 100. Jika ditentukan nilai start=50, record 0 - 50 diabaikan. Nilai parameter ini penting, mengingat bahwa jumlah record maksimum yang dikembalikan oleh response=terse adalah 500 dan untuk response=full hanya 50.

Pencarian Data
Pencarian data sebaiknya menggunakan format=terse agar tidak memberatkan server. Lagipula, hasil pencarian yang ditampilkan biasanya hanya nama dan beberapa data lain yang tidak begitu spesifik.

<?php
function cari_nama($katakunci,$mulai){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, "http://www.catalogueoflife.org/annual-checklist/2017/webservice?name=$katakunci&format=json&response=terse&start=$mulai");
 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla Firefox 1.0");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $hasil = curl_exec($ch);
 if(curl_errno($ch) == 0){
  curl_close($ch);
  return json_decode($hasil);
 }
 curl_close($ch);
 return NULL;
}
?>

Pencarian ID
Hasil pencarian ID dapat dipastikan hanya mengembalikan 1 buah record saja (apabila ID valid). Format=full sangat tepat dipilih, untuk memperoleh detail data yang lengkap.

<?php
function cari_id($id){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, "http://www.catalogueoflife.org/annual-checklist/2017/webservice?id=$id&format=json&response=full);
 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla Firefox 1.0");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $hasil = curl_exec($ch);
 if(curl_errno($ch) == 0){
  curl_close($ch);
  return json_decode($hasil);
 }
 curl_close($ch);
 return NULL;
}
?>


Tiap kali pemanggilan API, baik itu pencarian ID ataupun dengan katakunci, hasilnya akan diapit oleh struktur data semacam ini:

<results id="" name="" total_number_of_results="" number_of_results="" start="" error_message="" version="1.9 rev c957d6a">

     <result></result>     <!-- one <result /> for each record returned -->

</results>

Jika hasil ditemukan,  total_number_of_results tentu saja bukan 0. Hasil yang ditemukan akan disimpan sebagai array objek result, yang merupakan anakan objek results. Ada banyak varian objek result. Kita bisa mengetahuinya dengan melihat result->name_status. Sejauh ini, saya mengetahui name_status bisa salah satu dari string accepted_name, common_name, synonym, ambiguous_synonym atau higher_taxa.
(PENTING: Lihat macam-macam varian dan bentuknya dari link referensi di atas)

Contoh Implementasi
Dari 2 fungsi PHP di atas, saya akan menunjukkan bagaimana menampilkan hasil yang berkaitan dalam bentuk list sederhana.

<?php
...
$hasil = cari_nama("dog");
foreach ($hasil->results as $item){
 echo "<li>{$item->name}</li>"
}
?>


Lebih lanjutnya, silahkan pelajari sendiri dari dokumentasi, ya. Selamat mencoba :D
Read more

Sabtu, 18 Februari 2017

Cara Mengganti Password MySQL


Mengganti password MySQL rasanya gampang-gampang susah. Ini karena, tidak ada GUI tersedia untuk melakukannya. Mau tak mau, harus buka pakai command prompt. Tentu saja, harus tahu perintah yang digunakan. Tapi, MySQL bukanlah program biasa, ada ratusan implmentasi di dalamnya yang terlalu kompleks untuk dipahami secara keseluruhan. Bahkan, jika kita menggunakan perintah help sekalipun. Mengganti password adalah salah satunya.

Karena latar belakang di atas, tulisan ini akan menunjukkan beberapa cara mengubah password MySQL, berdasarkan beberapa inti masalah yang berbeda.


1. Mengganti Password Untuk Pertama Kali
Saat MySQL pertama kali diinstal dan digunakan, normalnya ada satu user bernama "root" yang bisa digunakan tanpa memerlukan password saat login. Untuk mengubah password untuk pertama kalinya, gunakan perintah:

mysqladmin -u root password newpass

Jika ada error, pastikan server MySQL sudah aktif. Jika masih tetap error juga, ikuti langkah di bawah untuk melakukan RESET password MySQL.


2. Update Atau Ganti Password Dari Command Line
Di hari selanjutnya, jika kamu rasa password ini sulit diingat atau tidak cocok. Kamu bisa mengubahnya dengan perintah berikut:

mysqladmin -u root -p passwordlama passwordbaru
Atau juga bisa digunakan pada username lain:

mysqladmin -u user-name -p passwordlama passwordbaru


2. Update Atau Ganti Password Dari MySQL Prompt
MySQL menyimpan username and password dalam database khusus. Kita dapat secara langsung mengubah data ini melalui query SQL. Berikut langkah-langkahnya:

- Login ke MySQL server dari command prompt:
  mysql -u root -p

- Pilih database mysql. Inilah database yang saya maksud sebelumnya. Setelah berhasil karang ketikkan query:
  use mysql;

- Cara mengubah passwordnya adalah sebagai berikut:
  UPDATE user SET password=PASSWORD("passwordbaru") WHERE user='username';

- Reload privileges dan selesai:
  flush privileges;
  quit


3. RESET Password (Lupa / Error)
Jika ada pesan seperti di bawah ini, artinya password yang kamu masukkan tidak sesuai. Tapi, jika berulang kali tetap demikian, tidak ada pilihan lain, selain mengatur ulang password.

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

Masalah semakin bertambah membingungkan, jika kita sama sekali tidak ingat satupun password dari semua user-name yang beroperasi pada MySQL. Jangan kawatir, masih ada solusi untuk masalah ini:

- Stop proses server MySQL dari task manager. Cari yang namanya, mysqld.exe. Di GNU/Linux, kamu bisa gunakan perintah berikut dari terminal:
  /etc/init.d/mysql stop

- Mulai ulang server/daemon tersebut secara manual dari command line dengan argumen --skip-grant-tables untuk memerintahkan MySQL agar melupakan proses autentifikasi password.
  mysqld --skip-grant-tables

- Lanjutkan dengan melakukan instruksi Cara Ke-2 di window command prompt baru (tanpa argumen -p), biarkan mysqld yang sebelumnya tetap berjalan pada window command prompt.

- Hentikan MySQL server, lalu mulai server seperti biasa.


Yap, selesai juga sedikit tulisan tutorial ini. Mudah-mudahan ini bisa membantu siapapun yang sedang kesulitan dengan masalah password MySQL.

Sumber:
https://www.howtoforge.com/setting-changing-resetting-mysql-root-passwords

Read more

Ukuran MySQL Terlalu Besar (1 GB+) : Hapus MYSQLSERVER.LIB


Selama ini banyak yag belum terlalu mmperhatikan bahwa ukuran binary MySQL melebihi ambang normal (1.2 GB), bahkan, saat tidak ada database sekalipun.

Dulu, pernah pengalaman instal WAMP. Belum genap 1000-an datanya, eh, tiba-tiba ada peringatan low disk space. Setelah ditelusuri, salah satu objek yang bisa dikorbankan ya, WAMP ini. Saya kira ini memang masalah dari MySQL yang dibundling oleh WAMP. Karena, setelah menginstall WTServer, ukuran disk yang diperlukan hanya 200 MB-an.

Hari ini, WAMP terinstall kembali, setelah saya tahu WTServer punya format tersendiri untuk .htaccess nya. Kali ini, saya telusuri kembali akar masalahnya. Dan, ternyata ada satu file aneh yang memakan memori hingga 900 MB: mysqlserver.lib. Untuk apa ada file ini di MySQL

Setahu saya, file ekstensi .lib hanya berguna untuk bagi siapa yang ingin membuat dan membangun program berbasis desktop yang terintegrasi library MySQL. Jadi, jika disini hanya ingin bekerja untuk web programming saja, menghapus file .lib akan aman-aman saja (100%). Bukan hanya di MySQL, jika ada file .lib lain di Apache atau PHP, kamu juga bisa menghapusnya kalu mau.

Sekian postingan tips dari Komputoo, semoga bermanfaat.
Read more

Senin, 15 September 2014

Membuat Program Database Sederhana Dengan SQLite (C)


SQLite merupakan library yang menyediakan fitur manajemen database untuk software. Sudah dari dulu SQLite banyak dikenal karena memiliki keistimewaan tersendiri. Dengan ukuran yang lumayan kecil, SQLite sudah dapat menyediakan hampir semua kode kueri seperti pada MySQL. Selain itu, dengan menggunakan SQLite, kita mendapatkan beberapa keuntungan, antara lain:
  • Program tidak terlalu terpengaruh dalam hal kecepatan, karena SQLite berukuran sangat kecil dibandingkan software database lain(mis. MySQL)
  • Lebih sederhana dan mudah, karena SQLite tidak membutuhkan username, password dan file konfigurasi apapun.
  • Instalasi mudah, karena inti SQLite hanya terdiri atas sebuah file library saja.
Sudah banyak pengembang software yang mem-binding SQLite dan menggunakannya sebagai manajer database default-nya, salah satu contohnya adalah Mozilla Firefox. Tak ayal lagi, SQLite sangat cocok digunakan untuk manajer database software kita.

Mari kita mulai

SQLite dapat menyimpan database dalam file. Jika diperlukan, kita juga bisa membuat database sementara(temporary) yang disimpan dalam RAM. Untuk membuat atau membuka database, kita menggunakan fungsi sqlite3_open. Argumen pertama(*filename) adalah nama file yang akan dibuka. Jika file belum ada, SQLite akan membuat file tersebut. Jika argumen pertama adalah “:memory:” atau 0, maka sqlite akan membuat database dalam memori. Argumen kedua(**ppDb) adalah pointer-to-pointer yang menunjuk ke struktur data sqlite (struct sqlite3). Struktur data ini berperan sebagai handle.
Berikut ini adalah bentuk fungsinya lebih jelas..

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);


Setelah database ditentukan, kita dapat mulai menjalankan query untuk melakukan apapun seperti yang biasanya manajer database lakukan. Jika biasa melakukan pemrograman PHP, fungsi yang akan kita bahas berikut ini memiliki fungsi yang sama dengan mysql_query, hanya saja disini argumennya lebih eksplisit. Berikut ini adalah bentuk fungsinya..

int sqlite3_exec(
  sqlite3*,              /* An open database */
  const char *sql,       /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**), /* Callback function */
  void *,                /* 1st argument to callback */
  char **errmsg          /* Error msg written here */
);


Seperti yang kita lihat, fungsi ini memiliki 5 parameter. Argumen pertama(sqlite3*) adalah pointer ke struktur daya sqlite. Seperti biasa, fungsinya adalah sebagai handle yang menyimpan statistik database yang telah dibuka. Yang kedua adalah pointer ke string yang berisi kode query. Saya rasa tidak perlu penjelasan pada bagian ini, sebagian besar kode sama seperti MySQL. Jika anda nanti anda mengalami kesalahan query, mungkin anda menggunakan beberapa kode yang berbeda dengan MySQL. Yang ketiga adalah fungsi callback untuk menerima data hasil query. Jika kode query yang diberikan tidak mengembalikan data, argumen ini boleh dibiarkan kosong. Sementara itu, bentuk fungsi callback akan kita bahas sebentar lagi. Lanjut ke parameter ke-empat, argumen ini penggunaannya tidak wajib alias opsional, jadi kita boleh biarkan kosong. Penggunaannya hanya diperlukan jika kita perlu data tambahan pada fungsi callback. Apabila kita menyertakan argumen pada argumen ini, SQLite akan menunjkkannya pada argumen pertama fungsi callback. Parameter terakhir merupakan pointer-to-pointer yang menunjuk pada buffer yang berisikan pesan error, jika eksekusi kode query terjadi kesalahan, pesan errornya bisa kita baca dari sini.
Oke, kita sudah membahas point terpenting dari bahasi query. Sebelum membahas ke fungsi paling akhir(sqlite3_close), kita jangan sampai lupa untuk memahami bentuk fungsi callback-nya. Berikut ini adalah bentuk fungsi callback-nya..

int callback(void* callback_data, int jml_kolom, char **isi_kolom, char **nama_kolom)
{
//kode
}


Sebenarnya kode diatas tidak perlu saya jelaskan juga, karena nama parameternya sengaja saya tulis dalam bahasa Indonesia. Tapi, biar lebih afdol dan semua jenis pembaca bisa paham, biarkan saya memenuhi tutorial ini dengan sedikit penjelasan setiap argumen fungsi callback di atas. Yang paling pertama adalah argumen yang berisi data opsional. Seperti yang telah dijelaskan pada fungsi sqlite3_exec – argumen keempat. Berikutnya, ada argumen kedua yang merupakan jumlah kolom dari hasil query. Ingat, jumlah kolom, bukan jumlah baris. Jadi, fungsi callback ini akan dipanggil untuk menerima data setiap baris satu per satu. Nah, selanjutnya parameter isi_kolom adalah array data yang masing-masing adalah isi dari kolom hasil pembacaan query. Terakhir adalah nama_kolom, tentu saja isinya adalah array dari nama-nama kolom data.

Dan, akhirnya, kita sampai untuk membahas fungsi paling terakhir, sekaligus fungsi paling sederhana.
int sqlite3_close(sqlite3*);

Jika sudah selesai melakukan manajemen database, kita dianjurkan untuk memberitahukan SQLite. Sebenarnya, statistik data secara otomatis akan terhapus ketika program selesai tanpa harus memanggil fungsi ini. Akan tetapi, jika kita menangani banyak data, fungsi ini terkadang diperlukan jua. Fungsi ini cukup menggunakan sebuah argumen yaitu pointer ke struktur data sqlite seperti fungsi sebelumnya.

Error Codes
Jika anda perhatikan baik-baik, maka anda akan tahu bahwa semua fungsi di atas mengembalikan nilai int. Apa gunanya/maksudnya?
Hampir semua fungsi SQLIte mengembalikan nilai integer(int), yang menunjukkan status hasil pemanggilan fungsi. Jika semua argumen benar dan tidak terjadi error, maka nilai kembalinya adalah 0 (atau ditulis dengan SQLITE_OK), selain itu, bisa jadi ada kesalahan.

Source Demo
Untuk memahami fungsi ini dalam, lihatlah source, header sekaligus DLL dalam link berikut.
(header dapat didapatkan pada situs resmi dengan nama “sqlite3_almagation” dan DLL dapat diperoleh pula dengan nama “sqlite_dll”)
Create_db.c : membuat table dalam database
Insert_db.c : mengisi table yang telah dibuat dengan beberapa data
Show_db.c : menampilkan database yang telah dibuatkan table dan diisikan data

https://app.box.com/s/80psou8z4zb0mk9g3cmi

Untuk pendukung, saya juga menyertakan ebook kecil didalamnya, yang sebelumnya sudah saya baca untuk memahami SQLite

Compiling dan Linking
Untuk mengompile program, saya menggunakan GCC dengan perintah seperti berikut:
gcc -Wall –o create_db.exe create_db.c sqlite3.dll
gcc -Wall –o insert_db.exe insert_db.c sqlite3.dll
gcc -Wall –o show_db.exe show_db.c sqlite3.dll

(source dan DLL harus ada dalam 1 folder)

Hasil




Read more