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