2015-12-27
PERTEMUAN 8
Data Access Objects
(DAO)
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
Data Access Objects (DAO)
Membuat Koneksi Database
Menjalankan Pernyataan SQL
Mengambil Hasil Query
Menggunakan Transaksi
Mengikat Parameter
Mengikat Kolom
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
1
2015-12-27
Data Access Objects (DAO)
Objek Akses Data menyediakan API
generik untuk mengakses data yang
disimpan dalam sistem manajemen
database (DBMS)
Yii DAO dibangun di atas PHP Data
Objects (PDO)
Menyediakan akses data gabungan untuk
beberapa DBMS populer, seperti MySQL,
PostgreSQL.
Teknologi Framework Yii, Dosen: Badiyanto,
S.Kom., M.Kom
Yii DAO terdiri dari empat kelas
utama sebagai berikut:
CDbConnection: mewakili koneksi ke database.
CDbCommand: mewakili pernyataan SQL untuk
dijalankan pada database.
CDbDataReader: mewakili forward-only stream
terhadap baris dari set hasil query.
CDbTransaction: mewakili transaksi DB.
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
2
2015-12-27
Membuat Koneksi Database
Buat instance CDbConnection dan
mengaktifkannya
Nama sumber data (DSN) diperlukan
untuk menetapkan informasi yang
diperlukan untuk menyambung ke
database
Exception akan dimunculkan seandainya
kesalahan
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
Contoh
$connection=new CDbConnection($dsn,$username,$password);
// melakukan koneksi. Anda dapat mencoba try...catch
exception yang mungkin
$connection->active=true; ......
$connection->active=false; // tutup koneksi
Di bawah ini adalah daftar format DSN yang umum dipakai
SQLite: sqlite:/path/to/dbfile
MySQL: mysql:host=localhost;dbname=testdb
PostgreSQL: pgsql:host=localhost;port=5432;dbname=testdb
SQL Server: mssql:host=localhost;dbname=testdb
Oracle: oci:dbname=//localhost:1521/testdb
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
3
2015-12-27
CDbConnection
CDbConnection diturunkan dari
CApplicationComponent,
konfigurasi dalam komponen aplikasi db (atau nama lain)
pada konfigurasi aplikasi sebagai berikut,
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
Aksess Konekasi
Mengakses koneksi DB
Yii::app()->db
Teknologi Framework Yii, Dosen: Badiyanto,
S.Kom., M.Kom
4
2015-12-27
Menjalankan Pernyataan SQL
pernyataan SQL dapat dijalankan
menggunakan CDbCommand.
Membuat instance CDbCommand dengan
memanggil
CDbConnection::createCommand()
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
PDO
$connection=Yii::app()->db;
// asumsi bahwa Anda memiliki koneksi
// "db" yang terkonfigurasi
// Jika tidak, Anda bisa membuat sebuah koneksi
// secara eksplisit
// $connection=new CDbConnection($dsn,$username,$password);
$command=$connection->createCommand($sql);
// jika diperlukan, statement SQL dapat
// diupdate sebagai berikut
// $command->text=$newSQL;
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
5
2015-12-27
konfigurasi dalam config/main.php
Teknologi Framework Yii, Dosen: Badiyanto,
S.Kom., M.Kom
PDO,, Mengikat Parameter
PDO
Yii DAO dibangun mengacu pada PHP Data Objects (PDO)
menghindari serangan injeksi SQL
Penampung parameter dapat bernama (disajikan sebagai
token unik)
Perintah INSERT
$sql="INSERT INTO tbl_pegawai(nip,nama,alamat)
VALUES (:nip,:nama,:alamat)";
$cmd= Yii::app()->db->createCommand($sql);
$cmd->bindParam(":nip",$nip,PDO::PARAM_STR);
$cmd->bindParam(":nama",$nama,PDO::PARAM_STR);
$cmd->bindParam(":alamat",$alamat,PDO::PARAM_STR);
$cmd->execute();
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
6
2015-12-27
PDO
Perintah UPDATE
$sql="UPDATE tbl_pegawai SET nama=:nama,alamat=:alamat WHERE nip=:nip";
$cmd= Yii::app()->db->createCommand($sql);
$cmd->bindParam(":nip",$nip,PDO::PARAM_STR);
$cmd->bindParam(":nama",$nama,PDO::PARAM_STR);
$cmd->bindParam(":alamat",$alamat,PDO::PARAM_STR);
$cmd->execute();
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
PDO
Mengikat Kolom
$sql="SELECT username, email FROM tbl_user";
$dataReader=$connection->createCommand($sql)->query();
// ikat kolom ke-1 (username) ke variabel $username
$dataReader->bindColumn(1,$username);
// ikat kolom ke-2 (email) ke variabel $email
$dataReader->bindColumn(2,$email);
while($dataReader->read()!==false)
{
// $username dan $email berisi username dan email pada baris saat ini
}
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
7
2015-12-27
Pernyataan SQL dijalankan
menggunakan CDbCommand
execute():
◦ melakukan pernyataan SQL non-query, seperti
INSERT, UPDATE and DELETE. Jika berhasil,
mengembalikan sejumlah baris yang
dipengaruhi oleh eksekusi
query()
◦ melakukan pernyataan SQL yang
mengembalikan baris data, seperti SELECT
Teknologi Framework Yii, Dosen: Badiyanto, S.Kom., M.Kom
8