pembahasan menggunakan c# dan sqlserver. Untuk akses database di .net ada 1 metode, pertama yaitu dengan DataAdapter dan DataSet untuk connectionless oriented, maksudnya yaitu kita “menyalin” dulu database yang kita gunakan ke dalam dataset, sehingga koneksi ke database tidak berlangsung terus menerus, keuntungannya jelas mengurangi traffic network. Model kedua yaitu connection oriented, dimana koneksi dilakukan terus menerus, dengan menggunakan sqldatareader(jika menggunakan sql server) ato oledatareader(utk database lain mis access).
Untuk akses dengan DataAdapter yg penting adalah kita udah set insert command, update command, select command, delete command, masing2 utk insert,update, select dan delete ke database, kalo cm mau buat liat datanya, cukup set insertnya aja, trus jg perlu manggil method fill, nah method ini bakal jalanin otomatis select command kita lalu ngisi ke dataset kita (Dataset anggep aja mirror database di local kita, bs mengandung table, relationship, constraint,dll)
cthnya gni ( ga di compile, jd mungkin error2 dikit ky masalah huruf besar/kecil, tp kalo pk intellisense ga masalah seh)
private string constring = .... ;//isi connection string
private dataset ds;
public void akses()
{
DataAdapter da = new DataAdapter();
using (sqlconnection con = new sqlconnection(constring) )
{
private sqlcommand cmd= new sqlcommand();
cmd.commandtext = "" // query sql ato nama storedprocedure jika menggunakan storedprocedure
cmd.commandtype = sqlcommandtype."..."
/*defaultnya adl query sql langsung, bs diubah jd stored procedure(recomended) */
cmd.connection = con; //sql connection yang dipake
/*
kalo storedprocedurenya ada parameters, cmd.parameters.add("paramName","paramtype");
cmd.parameters["paramName"].value = MyValue;
paramName nya persis sama ky di storedProcedure yg dibuat,mis "@id"
commandtext ma connection bs langsung diisi pas buat objek private sqlcommand cmd= new sqlcommand("commandText",connection);
*/
da.selectcommand = cmd;
da.fill(ds,"MyTable"); //MyTable adl nama table di dalam dataset kita, kalo ga diisi bakal jd table0,table1,dst
}
}
nah dengan gtu aja kita ud bs akses database kita, utk akses MyTable dari dataset, kita pake
da.Tables["MyTable"] << ini bertipe DataTable bs di return ato dimanipulasi lebih lanjut
nah kalo untuk pake datareader
public void akses()
{
using (sqlconnection con = new sqlconnection(constring) )
{
sqlcommand cmd= new sqlcommand();
sqldatareader reader = new sqldatareader();
cmd.commandtext = "" /* query sql ato nama storedprocedure jika menggunakan storedprocedure */
cmd.commandtype = sqlcommandtype."..." // defaultnya adl query sql langsung, bs diubah jd stored procedure(recomended)
cmd.connection = con; /*sql connection yang dipake */
/*
kalo storedprocedurenya ada parameters, cmd.parameters.add("paramName","paramtype");
cmd.parameters["paramName"].value = MyValue;
paramName nya persis sama ky di storedProcedure yg dibuat,mis "@id"
commandtext dan connection bs langsung diisi pas buat objek private
sqlcommand cmd= new sqlcommand("commandText",connection);
*/
con.open();
reader = cmd.executereader();
while (reader.read())
{
/*
utk akses colom pertama bs dengan
reader[0] ato reader["FirstKolom"], yg pake angka langsung lbh cepet, bs jg cara laen (nanti aj)
"FirstKolom" itu nama kolom / field yg lo buat, jangan lupa datanya harus di convert ke tipe data yang bener
misalnya utk ke int32: int x = Convert.toint32(reader[0]) tapi kalo cm mau ditampilin langsung aja pake .ToString()
*/
}
reader.close();
con.close();
}
}
nah kalo kita buka koneksi dengan con.open() jangan lupa ditutup, kalo males buka tutup, langsung aja executereader, tar otomatis dibuka dan ditutup koneksinya, tp inget kalo udah kita buka, panggil executereader trus ga ditutup, koneksinya ga otomatis ditutup
sebenernya sqlcommand ada 3 macem eksekusi
yaitu executereader << return datareader
executescalar << return 1 nilai di baris 1 kolom 1
executenonquery << yg ini untuk query yang ga ad returnnya, spt untuk insert update,delete, nah method ini return brp banyak data yg terkena efek query. nah tapi kalo pake select hasilnya PASTI -1,
trus mending pake datareader ato dataadapter ?? dari buku yang gua baca mending kalo bs datareader pakelah datareader, knp?lupa tar kalo inget baru gua cari
kayaknya seh gara2 kalo dataset itu makan memory, jd kalo ga butuh ya jangan