Mới nhất

Căn bản về kết nối CSDL SQL trong C#

By phantuanduy - Monday, April 15, 2013 No Comments

1. Khai báo :
1.1. Khai báo Namespace kết nối CSDL
using System.Data.OleDb ; // đối với CSDL là access
hoặc :
1
using System.Data.SqlClient; // đối với CSDL SQL
1.2. khai báo 3 biến cơ bản dùng để Kết nối CSDL
1
2
3
SqlDataAdapter da=new SqlDataAdapter() ;
SqlConnection con = new SqlConnection();
DataTable dt=new DataTable() ;
2 . Tạo Kết nối :
1
2
3
4
5
6
7
8
void ketnoi()
{
if (con.State == ConnectionState.Closed)
{
con.ConnectionString = "<Provider của CSDL>";
con.Open();
}
}
ví dụ Đối với CSDL là SQL
1
2
3
4
5
6
7
8
9
void ketnoi()
{
if (con.State == ConnectionState.Closed)
{
con.ConnectionString = "Server=(local);database=<tên CSDL>;user ID=sa;password=sa";
con.Open();
}
}
// sa là tài khoản mặc định trong SQL server
ví dụ : tên CSDL là QLDIEM

Hoặc : đối với CSDL là access
1
2
3
4
5
6
7
8
void ketnoi()
{
if (con.State == ConnectionState.Closed)
{
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "  data source= " + Application.StartupPath + "/QUAN_LY_SINH_VIEN.mdb";
con.Open();
}
}
3. Load dữ liệu vào datatable, datagridview, textbox,…
datatable :
1
da.fill(dt);
datagridview:
1
datagridview1.DataSource = dt;
Lấy dữ liệu từ datagridview ra ngoài :
Viết code cho các sự kiện RowHeaderMouseClick,…
1
2
int i = int.Parse(e.RowIndex.ToString());
this.Textbox1.Text = this.Datagridview.Rows.Cells[0].Value.ToString();
[i]Hoặc có thể dùng datatable:
1
this.Textbox1.Text = dt.Rows[0].ToString();
textbox :
1
textbox1.Databindings.add(new Binding("text",datatable,"");
[i]ví dụ:
1
txt_masv.DataBindings.Add(new Binding("text", dt_sinhvien, "MaSV"));
datetimepicker :
1
datetimepicker .add(new Binding("value",datatable,"");
ví dụ :
1
datetimepicker .add(new Binding("value",datatable,"NgaySinh");
combobox :
1
2
3
cbo.DataSource = dt;
cbo.ValueMember="datamember";// giá trị Items của combobox
cbo.DisplayMember ="datamember; // tên hiển thị Items
ví dụ :
1
2
3
cbo_lop.DataSource = dt_sinhvien;
cbo_lop.DisplayMember = "TenLop";
cbo_lop.ValueMember="MaLop";
Giải thích: dữ liệu hiển thị trên cbo là “TenLop” nhưng giá trị nhận đc khi thao tác (click) items của combobox là “MaLop” –> từ từ sẽ hiểu
4. Next, Previous, Last, First, Count
Cách 1 : Dùng “BindingContext “
‘ Next
1
this.BindingContext[dt].Position += 1;
‘ Previous
1
this.BindingContext[dt].Position -= 1;
‘ Last
1
Me.BindingContext[dt].Position = Me.BindingContext.Item(dt).Count - 1;
‘ First
1
C1:  DataGridView1.CurrentCell = DataGridView1["tên hàng", 0];
1
ví dụ : this.dgv_sinhvien.CurrentCell = dgv_sinhvien["MaSV", 0];
1
C2:  this.BindingContext[dt_sinhvien].Position = 0;
Cách 2 : Dùng “Bindingsource”
ví dụ : Khi viết code cho button ” Next”
1
2
3
4
BindingSource binding=new BindingSource();
binding.DataSource =dt ;
DataGridView1.DataSource =binding ;
binding.MoveNext();
Ý nghĩa : BindingSoure cung cấp các phương thức “MoveNext, MoveFirst,..” , ta chỉ việc khai báo datasource của gián tiếp với dt thông qua DataGridView1Bindingsource là sử dụng đc các giao thức đó
‘ Count
1
dt.Rows.Count
5. Thêm – Xóa – Sửa
5.1. Thêm :
5.1.1. : Phương pháp : Dùng Commandbuider để thực thi những thay đổi trong datatable
B1 : Khởi tạo hàng mới trong datable
1
DataRow newrow=dt.NewRow();
B2 : đưa dữ liệu vào hàng mới tạo
1
2
3
newrow["<field>"] = <dữ liệu cần thêm>;
...................................................................
dt.Rows.Add(newrow);
B3 : dùng commanbuider thực thi những thay đổi trong datatable
1
2
3
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(dt);
cb.Dispose();
ví dụ :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void them()
{
DataRow newrow = dt_sinhvien.NewRow();
newrow["Masv"] = txt_masv.Text;
newrow["HoTen"] = txt_hoten.Text;
newrow["NgaySinh"] = dtp_ngaysinh.Value;
newrow["QueQuan"] = txt_qq.Text;
newrow["MaLop"] = cbo_lop.SelectedValue;
dt_sinhvien.Rows.Add(newrow);
SqlCommandBuilder cb = new SqlCommandBuilder(da_sinhvien);
da_sinhvien.Update(dt_sinhvien);
cb.Dispose();
MessageBox.Show("xong");
}
5.2. Xóa:
5.2.1. Phương pháp 1: Dùng ExecuteNonQuery() hoặc ExecuteScalar() để thực thi trực tiếp command SQl vào CSDL
1
2
3
4
5
6
void xoa()
{
SqlCommand cmd = new SqlCommand(<lệnh SQL xóa >, con);
cmd.ExecuteNonQuery();
cmd.Dispose();
}
ví dụ :
1
2
3
4
5
6
7
8
9
void xoa()
{
DataRow row = dt_sinhvien.Select("MaSV = '" + txt_masv.Text + "'")[0];
SqlCommand cmd = new SqlCommand("delete from tbl_SinhVien where MaSV='" +txt_masv.Text + "'", con);
cmd.ExecuteNonQuery();
row.Delete();
cmd.Dispose();
MessageBox.Show("Xóa xong");
}
5.3. Sửa :
5.3.1. Phương pháp 1: Dùng câu lệnh thực thi ExecuteNonQuery
1
2
3
string sql= "Update <tên table> set  field1= 'giá trị 1', field2= 'giá trị 2',....."
SqlCommand cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery();
ví dụ :
1
2
3
4
5
6
7
8
void sua()
{
string sql ;
sql= "update tbl_SinhVien set MaSV='" + txt_masv .Text + "',HoTen='" + txt_hoten.Text+ "',NgaySinh='" + dtp_ngaysinh.Value + "',MaLop='" + cbo_lop.SelectedValue +"',QueQuan='" + txt_qq.Text + "'";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery();
MessageBox .Show ("Sửa xong");
}
Mong được sự góp ý của mọi người để bài viết hoàn thiện hơn.

No Comment to " Căn bản về kết nối CSDL SQL trong C# "