Convert Class

Bedanya adalah, kalo pake typecasting biasa seperti (int) a, maka akan dilakukan checking pada saat compile time, kalo dengan Convert, konversi dilakukan saat runtime, Tapi untuk berbagai kebutuhan kita memerlukan konversi saat runtime, misalnya untuk mengubah string “123″ menjadi angka (integer) 123, cukup dengan Convert.ToInt32(namaString)

akan ada 3 kondisi yg terjadi jika menggunakan Convert class.

1. Tipe data yang akan di convert dan tipe data tujuan adalah sama, tidak ada konversi yang terjadi

2. Tipe data berbeda, tapi tidak memungkinkan terjadi konversi misal string “abc” tidak bisa di convert ke int32 maka akan terjadi exception(System.FormatException, overflowexception,dll tergantung method convert yang dipakai) untuk menghindari runtime error, sebaiknya gunakan convert di dalam try statement kecuali sudah yakin bahwa konversi pasti berhasil

3. tipe data berbeda dan bisa di konversi, maka akan di konversi.

Data Connection

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 :P kayaknya seh gara2 kalo dataset itu makan memory, jd kalo ga butuh ya jangan