Cara membuat library koneksi CodeIgniter dengan Database IBM DB2 dan Adodb

Selamat berjumpa kembali dengan tutorial kami di Media Kreatif. Pada kesempatan kali ini kita akan membahas tentang bagaimana caranya menghubungkan Aplikasi CodeIgniter dengan Database DB2

Sekedar diketahui bersama, DB2 adalah Apalikasi Database yang dikembangkan oleh IBM yang kemampuannya jauh lebih tinggi dibandingkan Oracle. Tentunya biaya untuk pembelian lisensi penggunaan database ini sudah dapat kita tebak, harganya selangit ;( , tapi tenang, kalau sekedar untuk belajar kita bisa mencari versi freenya yang sudah disediakan oleh IBM

 

Berkenaan dengan CodeIgniter, ternyata database Driver pada CodeIgniter belum mendukung untuk akses ke database DB2, sehingga kita memerlukan Database Driver lain yang akan kita tambahkan pada library CodeIgniter, database Driver yang dimaksud dalam hal ini adalah Adodb, bahkan untuk mengakses Database Oracle pun, Database driver pada CodeIgniter juga akan mengalami kendala ketika harus berhadapan dengan REF CURSOR pada Oracle, dan lagi - lagi Adodb menjadi pilihan untuk mengatasi masalah tersebut.

Adapun langkah - langkah yang harus dilakukan dalam proses koneksi DB2 dengan CodeIgniter antara lain :

1. Download Database Driver Adodb

Adodb merupakan database driver yang sangat powerful untuk keperluan akses ke beberapa Database server. Adodb dapat kita peroleh dengan gratis pada alamat berikut :
» . phplens.com
» . Source forge

Setelah mendownload Adodb, jangan lupa extract dan copy folder Adodb ke direktory

/application/libraries/

 


2. Buat class library Adodb » /application/libraries/Adodb.php

Buat file berikut dan tempatkan pada direktori /application/libraries/ bersebelahan dengan folder adodb yang sudah kita copykan sebelumnya.

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

	class Adodb 
	{
		function Adodb() 
		{
			if (!class_exists('ADONewConnection') )
			{
				 require_once(APPPATH . 'libraries/adodb/adodb.inc.php');
			}

			$ci =& get_instance();
			$db_var = false;
			$debug = false;
			
			// try to load config/adodb.php
			// extra parameter comes from patch at http://www.codeigniter.com/wiki/ConfigLoadPatch/
			// without this patch, if config/adodb.php doesn't exist, CI will display a fatal error.
			
			if (!isset($dsn) or $dsn == NULL)
			{
				// fallback to using the CI database file
				include(APPPATH . 'config/database.php');
				$group = 'default';
				$dsn = $db[$group]['dbdriver'].'://'.$db[$group]['username']
					   .':'.$db[$group]['password'].'@'.$db[$group]['hostname']
					   .'/'.$db[$group]['database'];
			}
			
			// $ci is by reference, refers back to global instance
			$ci->adodb = ADONewConnection($dsn);

			$ci->db    = $ci->adodb;
			
			if ($debug)
			{
				$ci->adodb->debug = true;
			}
			$ci->db   = $ci->adodb;
			return $this;
		}
	}
?>

3. Download php_ibm_db2.dll

File tersebut merupakan library db2 client untuk PHP yang disediakan oleh IBM untuk kita tambahkan pada extensi pada PHP kita. Download file tersebut pada alamat berikut :
Download php_ibm_db2.dll

Setelah mendownload file tersebut, silahkan copy file tersebut pada direktory extensi php kita, biasanya terletak pada /php/ext/ , setelah memasukkan file tersebut, jangan lupa untuk mengaktifkannya dengan cara menambahkan kode berikut pada konfigurasi php.ini, cari file php.ini kemudian edit dan tambahkan kode

extension=php_ibm_db2.dll

Pada deretan daftar extensi php kita. setelah selesai dengan proses tersebut, kita harus restart apache kita untuk mengaktifkan extensi db2 client tersebut pada php komputer kita.

 


4. Setting konfigurasi database CodeIgniter » /application/config/database

 

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
| -------------------------------------------------------------------
| DATABASE CONNECTIVITY SETTINGS
| -------------------------------------------------------------------
| This file will contain the settings needed to access your database.
|
| For complete instructions please consult the 'Database Connection'
| page of the User Guide.
|
| -------------------------------------------------------------------
| EXPLANATION OF VARIABLES
| -------------------------------------------------------------------
|
|	['hostname'] The hostname of your database server.
|	['username'] The username used to connect to the database
|	['password'] The password used to connect to the database
|	['database'] The name of the database you want to connect to
|	['dbdriver'] The database type. ie: mysql.  Currently supported:
				 mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
|	['dbprefix'] You can add an optional prefix, which will be added
|				 to the table name when using the  Active Record class
|	['pconnect'] TRUE/FALSE - Whether to use a persistent connection
|	['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
|	['cache_on'] TRUE/FALSE - Enables/disables query caching
|	['cachedir'] The path to the folder where cache files should be stored
|	['char_set'] The character set used in communicating with the database
|	['dbcollat'] The character collation used in communicating with the database
|				 NOTE: For MySQL and MySQLi databases, this setting is only used
| 				 as a backup if your server is running PHP < 5.2.3 or MySQL < 5.0.7
|				 (and in table creation queries made with DB Forge).
| 				 There is an incompatibility in PHP with mysql_real_escape_string() which
| 				 can make your site vulnerable to SQL injection if you are using a
| 				 multi-byte character set and are running versions lower than these.
| 				 Sites using Latin-1 or UTF-8 database character set and collation are unaffected.
|	['swap_pre'] A default table prefix that should be swapped with the dbprefix
|	['autoinit'] Whether or not to automatically initialize the database.
|	['stricton'] TRUE/FALSE - forces 'Strict Mode' connections
|							- good for ensuring strict SQL while developing
|
| The $active_group variable lets you choose which connection group to
| make active.  By default there is only one group (the 'default' group).
|
| The $active_record variables lets you determine whether or not to load
| the active record class
*/

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = "driver={IBM db2 odbc DRIVER};Database=DB_NAME;hostname=DB_HOSTNAME;port=50000;protocol=TCPIP;"."uid=DB_USER; pwd=DB_PASSWORD";
$db['default']['username'] = 'DB_USER';
$db['default']['password'] = 'DB_PASSWORD';
$db['default']['database'] = 'DB_NAME';
$db['default']['dbdriver'] = 'odbc_db2';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;


/* End of file database.php */
/* Location: ./application/config/database.php */

Library database ini tidak perlu kita load pada CodeIgniter seperti yang biasa kita lakukan pada file /applications/config/autoload.php , hal ini dikarenakan pada CodeIgniter tidak terdapat database driver odbc_db2 sehingga kalau kita load library databasenya akan memunculkan pesan koneksi eror pada CodeIgniter. Yang harus kita load dalam hal ini adalah library Adodb yang sudah kita buat sebelumnya, yaitu Adodb.php. Buka file /applications/config/autoload.php , kemudian load library Adodb dengan cara menambahkan adodb pada bagian berikut :

$autoload['libraries'] = array('adodb');

Jangan lupa untuk menyesuaikan konfigurasi database sesuai dengan kebutuhan kita, yaitu :

 

  1. DB_NAME » NAMA DATABASE
  2. DB_HOSTNAME » IP DATABASE SERVER
  3. DB_USER » USERNAME DATABASE
  4. DB_PASSWORD » PASSWORD DATABASE

Setelah melakukan langkah - langkah diatas dengan benar, silahkan coba untuk menjalankan Aplikasi CodeIgniter kita yang sudah kita hubungkan dengan Database DB2. Hal yang perlu diingat adalah, database driver yang kita gunakan selanjutnya bukan lagi milik CodeIgniter, akan tetapi adalah milik Adodb, sehingga perintah - perintahnyapun akan berubah seseuai dengan Adodb seperti terlihat pada contoh berikut.

$this->db->query('sql command') &rquo; $this->db->Execute('sql command')
->result() » ->FetchRow()
->num_rows() » ->RecordCount()
//Dan lain - lain

Sekian dulu tutorial yang bisa kami sampaikan untuk anda, selamat mencoba dan salam kreatif


Komentar pembaca

JulioESTIMADO ME SALE ESTE ERROR: HELP !!! A PHP Error was encountered Severity: Warning Message: require_once(D:/wamp/www/aplicaciones/system/database/drivers/odbc_db2/odbc_db2_driver.php): failed to open stream: No such file or directory Filename: database/DB.php Line Number: 140posting pada :2013-11-30 23:58:24
AdminHi Julio, in the config/autoload.php , dont load the database, but you should load the Adodb becouse the database driver is located on Adodb librarys, not in codeigniter database librariesposting pada :2013-12-01 09:24:42
Adminquery() is a function on default CodeIgniter database Driver, in this case we are not using it again because it doesn't support to DB2, but we use Adodb database driver now. function $this->db->query() now changes to $this->db->Execute('your query'). You can check the Adodb documentation here, http://phplens.com/lens/adodb/docs-adodb.htmposting pada :2013-12-05 22:01:26
Ryo CahyoBro gue udah ngikutin cara ente tapi masih blm bisa, ane pake CI versi terbaru. pas setting databasenya 'dbdriver' => 'odbc_db2', dia ada error Message: Use of undefined constant ODBC_BINMODE_RETURN - assumed 'ODBC_BINMODE_RETURN' kalo dikosongin malah bisa tapi pas Execute query error Message: Call to a member function Execute() on a non-objectposting pada :2017-07-25 17:03:51