Data Access Objects (DAO)

advertisement
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
Download