Nah pada kesempatan ini kita akan
membahas bagaimana cara koneksi ke database ( SQL SERVER) menggunakan C#. Apa
yang harus disiapkan?
1. SQL Server
( semua versi bisa kyanya)
2. Visual Studio
C#
3. + database
yang dipake ujicoba.
Pertama siapkan dulu database yang
digunakan :
Database yang digunakan kali ini kita namakan db_latihan,
inget nama databasenya karena akan kita gunakan ketika melakukan
koneksi. Langkah kedua adalah membuat tabel yang akan digunakan.
Pada contoh
ini akan dibuat tabel yang paling sederhana, yaitu tabel kategori
Berikutnya adalah merancang tabel
kategorinya :
Untuk tabel kategori dicontoh ini
membuat 3 buah field yaitu, id_kategori, nama_kategori dan keterangan. Yang
perlu diperhatikan adalah id_kategori dimana
tipe data yang digunakan adalah INT dan
adalah auto increment
Mengapa harus seperti itu??
Karena saya tidak mau repot
mengurus ID yang ada didalam tabel kategori, ID Kategori akan dicreate oleh SQL
Server karena sudah kita seting auto
increment . Jika sudah simpan tabel kategori dengan nama t_kategori.
Karena database dan tabel sudah siap, kita langsung masuk ke
Visualnya.
Apa saja langkah-langkah untuk melakukan koneksi ke SQL
Server??
- Buat form dulu
- Buat class untuk conection string
- Yang terakhir tinggal query aja
Langsung saja, silahkan rancang form sesuai dengan tabel yang
kita punya :
Silahkan rancang form sesuai dengan diatas, keterangannya :
- Untuk Textbox (txtid_kategori , txtNamaKategori, txtKeterangan)
- Untuk Button (btnNew, btnSimpan, btnHapus, btnKeluar)
- Untuk ListView (lvKategori )
Jika form sudah siap lanjut ke codingnya.
Langkah pertama adalah menambahkan class.
Class akan digunakan untuk menyimpan variable global, yaitu conection string.
Conecntion string adalah sebuah
variable string yang digunakan untuk melakukan setingan koneksi ke server.
Untuk membuat class berikut tahapannya :
Klik kanan pada nama projectnya => Add=> Class
Untuk class diberi nama koneksi.cs
Jika sudah hasilnya seperti berikut :
Tambahkan coding using System.Data.SqlClient; untuk
bagian atasnya pada koneksi.cs. Apa gunanya? Untuk koneksi ke SQL Server. Selanjutnya
tambahkan coding seperti dibawah ini :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace latihan_dbprogramming
{
class koneksi
{
public System.Data.SqlClient.SqlConnection
GetConn()
{
System.Data.SqlClient.SqlConnection
conn = new System.Data.SqlClient.SqlConnection();
conn.ConnectionString
= "Data Source= Toufik-PC; Initial
Catalog= db_latihan;user=sa;
Password=123456";
return conn;
}
}
}
Yang perlu diperhatikan adalah tulisan berwarna merahnya,
"Data Source= Toufik-PC;
yang
ini adalah nama server yang digunakan pada SQL SERVER
Initial Catalog= db_latihan; yang ini adalah
nama databasenya
user=sa; ini adalah username untuk masuk ke
database
Password=123456"; ini adalah passwordnya
Terus gmna kalo gak isi password?? Klo gk isi password
dirubah menjadi
conn.ConnectionString = "Data Source= Toufik-PC; Initial Catalog= db_latihan; Integrated
Security=True";
Nah itu untuk classnya. Jika sudah kita lanjut ngoding yang
lain :D
Kembali ke form, langkah pertama
yang harus diatur adalah mengatur property dari textbox yang akan diletakkan di
form load.
Tambahkan coding berikut diform load,
private void Form1_Load(object sender, EventArgs
e)
{
txtid_kategori.Enabled = false;
txtid_kategori.Text = "OTOMATIS";
}
Agar ketika load, txtid_kategorinya disable dan berisi tulisan id
otomatis.
Karena nanti id nya bakal ke isi sendiri secara otomatis tanpa kita harus insert secara manual lagi.
Langkah selanjutnya adalah menambahlan namescape seperti
diclass :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using
System.Data.SqlClient;
Kenapa selalu ditambahkan using
System.Data.SqlClient karena form ini akan ada koneksi ke database.
Jika sudah, kita harus memanggil
conection string dari class yang sudah dibuat tadi, caranya sebagai berikut :
koneksi konn = new koneksi();
public
Form1()
{
InitializeComponent();
}
Tambahkan coding koneksi konn = new koneksi();
Koneksi adalah
nama classnya
Konn adalah
variable yang digunakan untuk class.
Tahapan selanjutnya adalah membuat method untuk isi dari listviewnya,
codingnya sebagai berikut (ingat codingnya taruh didalam classnya):
public void listdata()
{
SqlDataReader reader = null;
lvKategori.Items.Clear();
lvKategori.Columns.Clear();
lvKategori.Columns.Add("ID
Kategori", 70, HorizontalAlignment.Left);
lvKategori.Columns.Add("Nama
Kategori", 150, HorizontalAlignment.Left);
lvKategori.Columns.Add("Keterangan",
150, HorizontalAlignment.Left);
lvKategori.GridLines = true;
lvKategori.FullRowSelect = true;
lvKategori.Activation = ItemActivation.TwoClick;
lvKategori.View = View.Details;
lvKategori.MultiSelect = false;
System.Data.SqlClient.SqlConnection
conn = konn.GetConn();
try
{
conn.Open();
string sql = "select
* from t_kategori";
SqlCommand command = new SqlCommand(sql,
conn);
command.ExecuteNonQuery();
//Cek
ada
reader = command.ExecuteReader();
while (reader.Read())
{
ListViewItem item1 = new ListViewItem(reader["id_kategori"].ToString(), 0);
item1.SubItems.Add(reader["nama_kategori"].ToString());
item1.SubItems.Add(reader["keterangan"].ToString());
lvKategori.Items.Add(item1);
}
}
catch (Exception
e)
{
MessageBox.Show(e.ToString());
}
finally
{
conn.Close();
}
Dan jika sudah, panggil method tersebut diform loadnya :
private void Form1_Load(object sender, EventArgs
e)
{
txtid_kategori.Enabled = false;
txtid_kategori.Text = "OTOMATIS";
listdata();
}
Yang sudah coba jalankan projectnya :
Terlihat sudah ListViewnya sudah terisi.
ListView sudah, sekarang kita ngerjain button Simpannya. Codingnya seperti berikut :
Tahap 1 : atur logikanya jika
id=OTOMATIS akan sebagai simpan, jika tidak akan menjadi update. Dan rancang
codingnya seperti berikut :
Tahap 2. Cek Validasinya, karena
jika tersimpan ke database data tidak boleh ada yang kosong. Dan Codingnya
seperti berikut :
Nah itu coding validasinya, bagaimana untuk
simpan datanya??
Penjelasan :
System.Data.SqlClient.SqlConnection
conn = konn.GetConn();
conn.Open(); ==> ini coding untuk memanggil koneksi dan membuka
koneksinya
string sql = "insert
into t_kategori values ('" + txtNamaKategori.Text + "','"
+ txtKeterangan.Text + "')";
Coding diatas untuk Query SQLnya, insert ke tabel
t_kategori dan datanya diambil dari textbox, kenapa tidak ada ID?? Kan udah
dibilang Idnya OTOMATIS :p
SqlCommand command = new SqlCommand(sql, conn);
command.ExecuteNonQuery(); ==> yang ini untuk mengeskekusi querynya
conn.Close(); ==> ini untuk nutup koneksi
MessageBox.Show("Data
Kategori Sukses Tersimpan"); ==> Nampilin pesan sukses
Kalau sudah, coba jalanin programnya dan coba
untuk menyimpan data
Cek validasi dulu :
Jika semua data sudah terisi dan kemudian disimpan maka :
Nah simpan sudah, terus untuk updatenya gmna??
Kita bahas karang untuk updatenya , dan berikut ini coding
updatenya :
Penjelasannya sama koq ama
insert datanya, bedanya hanya diQuerynya saja, yang warna merah diatas. Nah
jika updatenya sudah, sekarang tambahkan coding untuk ListView_MouseDoubleClick.
Carilah property dari lvKategori
:
Dobel klik pada event MouseDoubleClick, maka akan masuk ke
halaman codenya, dan muncul coding seperti berikut :
private void
lvKategori_MouseDoubleClick(object sender, MouseEventArgs e)
{
}
Tambahkan coding untuk
lvKategori_MouseDoubleClicknya :
private void
lvKategori_MouseDoubleClick(object sender, MouseEventArgs e)
{
try
{
txtid_kategori.Text =
lvKategori.SelectedItems[0].Text;
txtNamaKategori.Text
= Convert.ToString(this.lvKategori.SelectedItems[0].SubItems[1].Text);
txtKeterangan.Text
= Convert.ToString(this.lvKategori.SelectedItems[0].SubItems[2].Text);
}
catch
{
MessageBox.Show(e.ToString());
}
}
Intinya adalah ketika diclick
listviewnya, agar datanya mengisi textbox sesuai dengan semestinya. Yang harus
diseting adalah
SelectedItems[0].Text
SelectedItems[1].Text
SelectedItems[2].Text
Diatas adalah index dari field
dalam database, index ke 0 adalah id_kategori, index ke-1 adalah nama_kategori
dan seterusnya. Jika dijalankan hasilnya seperti berikut :
Sudah bisa ketika click muncul
ditextbox?? Jika sudah silahkan rubah datanya, untuk melakukan proses UPDATE.
Misalnya dirubah menjadi :
Dan datanya pun sudah terupdate :
Nah yang terakhir adalah untuk
proses Hapus atau DELETE.
Silahkan dobel klik untuk button
hapusnya :
{
}
Sekarang kita akan menambahkan
coding untuk button HAPUS, langkah pertama adalah cek apakah ID = OTOMATIS atau
TIDAK, jika otomatis munculkan pesan pilih data yang dihapus, jika tidak
silahkan dihapus datanya , rancang dlu IF-nya:
Jika sudah masuk konsepnya, baru buat query deletenya :
Jika ID=OTOMATIS, akan muncul validasi pilih
data yang akan dihapus
Dan silahkan klik listnya untuk memilih barang yang akan
dihapus :
Yup segitu aja dulu postingan tentang cara menghubungkan visual dengan SQL dan simpan update deletenya...
kalo ada yang gak ngerti silahkan bertanya aja di form komentarnya...
kalo ada yang gak ngerti silahkan bertanya aja di form komentarnya...
Good Luck, Semoga kaga banyak erornya :p
gan maaf ganggu, mau nanya nih gan yang buat id otomatis itu. kok saya ga bisa ya dari yang buat save data nya itu gan padahal semua kodingan sudah benar dan sama tetapi selalu error di baris command.executenonquery(); dan keterangan errornya Insert Error: Column name or number of supplied values does not match table definition. itu kenapa ya gitu terus dan juga mau tanya untuk public void list data() itu ditaro nya di form1.cs kan? letaknya ngaruh tidak gan? seperti dibawah form load atau gimana? mohon bantuannya gan. terimakasih
BalasHapuscoba cek tabel di databasenya,,, udah sama ga' jumlahnya dengan yang di coding query insertnya, dan pastiin id tabelnya udah di set dengan auto increment.
HapusKalo di atas udah yakin ga' ada salah nah coba di execute lagi. kalo masih ga' bisa juga periksa di coding visualx pas bagian insert, pastikan di query insertnya ga' ada value untuk id atau value id nya kosong.
Untuk public void list data() nya, itu ga' di taruh dalam load, atau lainnya. dia class yg berdiri sendiri. nah pas classx di panggil (kita sebut aja method), itu baru di masukin kedalam form load nya (bisa juga di taruh dibagian mana saja ketika methodx ingin di gunakan, seperti pada button_click misalnya).
contoh:
private void Form1_Load(object sender, EventArgs e)
{
listdata(); //ini methodnya dipanggil ketika aplikasi dijalankan.
}
dan class list data nya di buat di form1.cs....
kalo masih, belom bisa. bisa di tanyakan di forum, atau emailkan ke admin@toufik.web.id program beserta databasex biar saya bantu cekin :)
cara bikin auto increment gmna gan? masalah ane sama kayak mbak Marissa,,,
Hapusintinya.. tipe datanya harus integer ato sejenisnya...
Hapusterus is identity nya di set ke "YES"... gitu aja gan...
thanks gan,, suksess,, is identity di set "YES"
Hapusgan, biar waktu simpan data langsung di tampilkan pad listviewnya gmna cara?
Hapuspanggil aja method listdata() nya dibawah messagebox nya di button simpan... di tulisan proses simpan itu...
Hapusooo iya,,, thanks gan,,, suksess :)
HapusApakah bisa konek db dengan c# kalo tanpa class?!
BalasHapusMaksud saya adalah coding dalam satu halaman saja, misalnya koneksi terjadi ketika ada event button1_click dan lain sebagainya?!
bisa gan,,,
Hapusgann ... kok beda yah...
BalasHapusdi agan public void listData
kok di saya
private void LvKategori_SelectedIndexChanged(object sender, EventArgs e)
{
}
trus kok ga mucul yah datanya..
mohon pencerahan nya master...
void listData() itu method yang dibuat sendiri,,,
Hapussedangkan private void LvKategori_SelectedIndexChanged(object sender, EventArgs e) itu berasal dari properties event nya listView...
masih bingung? kirim aja coding ma databasex ke admin@toufik.web.id ntar saya liat kalo sempat...
thanks...
public System.Data.SqlClient.SqlConnection getConn() yang getConn nya kok di baca not all code paths return a value c#
BalasHapusini pada class koneksi.
mohon pencerahannya gan..
terimakasih
udah ditambahin library data.sql nya?
Hapussudah gan...
Hapus@_@
kirimin coding ama databasenya ke admin@toufik.web.id aja gan... biar saya cekin...
Hapusudah mau bener gan... dan sudah jalan programnya...
Hapustapi ada kendala saat update gan.,., pas update kok semua datanya yang ke update,,
bagaimana solusinya gan.,.,., makasii.,.,
sangat membantu.
intinya pake primary key databasenya... biar id nya gak ada yang sama atau uniq... kalo udah uniq parameternya gak bakal ke update semua datanya,,
Hapussudah gan..,,, terimakasih.,.,
Hapussangat membantu
sukses selalu dalam karyanya..
Gan, kalo saya mau koneksiin 2 database bagaimana ya? Jadi ada komputer A dengan database 'A' dan ada komputer B dengan database 'B'. Sewaktu2 komputer A mengirim request data ke komputer B. Lalu komputer B membalas dengan mengirim kembali data yang diinginkan komputer A.
BalasHapuscoba pake adhoc gan,,, jadi antara komputer a dan komputer b dihubungkan lewat jaringan... jadi nanti ada komputer yang berperan sebagai server yang mengakomodasi data antar komputernya....
Hapustutorialx coba cari di google dlu.. sy belum sempat buatnya...
Ia mantap nih gan udah bisa buat jaringan adhocny, ud bisa konek komputer A sama B pake jaringan server yang dibuat. Cara kirim datanya gmn ya gan? codingannya ga kebayang. Saya pake windows application C#, database sql server. tampilannya udah jadi. Tinggal masalah mau ngerequest data sama kirim data.
HapusKebnyjan tutorial saya nemuinnya,1 database diakses bnyk komputer.
Master mohon Pencerahan saya baru belajar, saya errornya seperti ini maslah dmana pak?
BalasHapusSystem.Data.SqlClient.SqlException was unhandled
HResult=-2146232060
Message=String or binary data would be truncated.
The statement has been terminated.
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060
Class=16
LineNumber=1
Number=8152
Procedure=""
Server=Uut
State=4
StackTrace:
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Uut1.FormAdm.buttonSimpan_Click(Object sender, EventArgs e) in d:\PROJECTVSC#\Uut1\Uut1\Form1.cs:line 109
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Uut1.Program.Main() in d:\PROJECTVSC#\Uut1\Uut1\Program.cs:line 20
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
boleh jawab lewat emai pak di= uutbudhics1@gmail.com
trimakasih sebelumnya
gan ini posisi ditaruh mana
BalasHapuskoneksi konn = new koneksi();
public Form1()
{
InitializeComponent();
}
masalahnya saya coba ini salah
pastikan udah buat class koneksi nya...
Hapusterus tambahin koneksi konn = new koneksi(); di form .cs di atas public yang mau dipakein class koneksinya...
ijin simak dan langsung mau praktek, terima kasih sudah berbagi tutorial penting ini :)
BalasHapusMas, mau nanya waktu kita buat public void listdata(). kok saya tdk bs tambahkan lvKategori ya ? Kalau kita ketik lvKategori.Items.Clear(); itu lvKateogrinya merah
BalasHapusPadahal Listview sudah saya ganti name : lvKategori
ini saya lampirkan file yg saya kerjakan ( http://www.4shared.com/rar/mf0-xYdqba/latihan_dbprogramming.html )
Mohon pencerahannya dan minta link source nya yang udah jadi mas, biar bisa dipelajari lagi
Thanks
ini visual studiox 2012 ato lebih tinggi ya? mau aq liat tapi aq make yg 2010 jadi gak bisa deh,,, gak punya yg 2012 soalx...
HapusKok ListView-nya tidak autorefresh ya. jika klik simpan/update/delete sih data berubah namun harus close lalu run lagi.
BalasHapuspanggil lagi loadlistview nya setelah tombol simpan / delete..
Hapusgan tolong jawabannya ,
BalasHapusuntuk bikin form1_Load() itu dibagian mananya ya ?
makasih gan
klik dimana saja ditempat kosong pada form design nya....
Hapusmas toufik mau tanya dong hehe
BalasHapusitu kan nanti fungsinya untuk menambah data yang di input gitu kan ya? kalau kita mau buat data jumlah stok barang, tujuan akhirnya itu nanti jumlah barang bukan inputan data. nah jadi ada database utama yg isinya data stok barang awal, trus inputan yg kita lakukan itu saat ada pemasukan barang atau pengeluaran barang, kita main jumlah disini.. misalnya kita punya PC 10 pcs di data awal (database utama), trus ada pemasukan lagi PC 2 pcs, nah trus kita nginput untuk data pemasukan PC dengan jumlah 2, dengan harapan hasil akhir yg ada di database utama itu jumlah PC berubah jadi 12 pcs. Dibuat gitu bisa nggak ya mas ?
Terimakasih sebelumnya :)
bisa kok.... pertama kita buat method dulu... anggap aja..
Hapusprivate string setKuoata()
{
}
nah terus kita ambil data kuota dari tabel,, anggap aja... tabel qty,
Sql = "select qty from tb_barang";
System.Data.SqlClient.SqlConnection conn = konn.GetConn(); // buat variable SqlConnection
buat string dulu
string totalKuota= "";//buat save kuota baru
string maxInteger;
maxInteger = "0"; // buat nyimpan quota nanti dr dtabase
if (MyReader.HasRows)//cek data ada apa nggak
{
MyReader.Read();
maxInteger= MyReader[0].ToString();// variable simpan data kuota dari database
}
MyReader.Close();
float total = 0; // variabel simpan kuota baru
total = Int32.Parse(maxInteger) + Int32.Parse(txtKuota.text); // tambahkan kuota dari database dengan kuota baru dari textbox nya.
totalKuota = total ;
return totalKuota;//mengembalikan semua data ke totalKuota.. ini nanti variabel kuota yang di save ke databasenya.
}
jadi saat dipanggil buat masukin data kedatabase, panggil fungsi setKuota() dan otomatis data kuota lama dan data kuota baru akan di tambah dan disimpan kedatabase...
Komentar ini telah dihapus oleh pengarang.
HapusWah terimakasih sekali mas atas jawabannya.. sangat membantu :)
HapusSaya mau sharing2 boleh ndak mas? Tadi saya kirim email ke mas Toufik, kalau bisa mohon dicek hehehe :)
iya sama2... :) nanti sy cek...
HapusMas Toufik,
BalasHapusTerima kasih atas postingannya.
Kalau membuat ini dengan stored procedure itu seperti apa deh mas?
Bisa tolong diberikan contohnya?
Terima kasih
bisa kok gan,,, lengkap ke jasa pembuatan program di menu paling kanan...
HapusMas toufik mau nanya nih,kalo datanya ditampilkan pake datagridview gimna kodingnya mas,trus kalo di form supplier misalnya kan ada kode_supplier tu,mau ditampilin di form barang pake combobox kodingnya gimna mas.mohon pencerahannya mksih
BalasHapusMas toufik mau nanya nih,kalo datanya ditampilkan pake datagridview gimna kodingnya mas,trus kalo di form supplier misalnya kan ada kode_supplier tu,mau ditampilin di form barang pake combobox kodingnya gimna mas.mohon pencerahannya mksih
BalasHapusMas toufik mau nanya nih,kalo datanya ditampilkan pake datagridview gimna kodingnya mas,trus kalo di form supplier misalnya kan ada kode_supplier tu,mau ditampilin di form barang pake combobox kodingnya gimna mas.mohon pencerahannya mksih
BalasHapusgan koneksi class yang ini knp error ya
BalasHapuskoneksi konn = new koneksi();
public Form1()
{
InitializeComponent();
}
itu koding di class kan bukan di formnya .
mohon pencerahannya .
gan mau nanya nich... koding untuk cetak laporan untuk Vb 2008,,balas lewat email. ronnyedison1@gmail.com
BalasHapusmas mohon bantuan yg simpan nya gak bisa gimana soalnya sya kan surat masuk jadi pakek varchar bukan int jd gak bisa di auto increment jadi gimana solusinya
BalasHapusgan mau tanya, public void listdata() ditaroh mana gan?
BalasHapus