Professional Documents
Culture Documents
C4 - Kết Nối Cơ Sở Dữ Liệu Với
C4 - Kết Nối Cơ Sở Dữ Liệu Với
C4 - Kết Nối Cơ Sở Dữ Liệu Với
2
Lịch sử phát triển
3
Kiến trúc ADO.NET
4
ADO.NET
ADO.NET là công nghệ truy xuất dữ liệu có
cấu trúc, cung cấp giao diện hướng đối tượng
hợp nhất (Uniform object oriented) cho các dữ
liệu khác nhau
Cơ sở dữ liệu quan hệ
XML
Các dữ liệu khác
Được thiết kế cho các ứng dụng phân tán và
Web
5
ADO.NET
ADO.NET = ActiveX Data Objects
Các đối tượng ADO.NET chứa trong
namespace System.Data.
Các đối tượng ADO.NET chia thành 2 loại:
Connected: Các đối tượng kết nối trực tiếp với cơ
sở dữ liệu.
Disconnected: Các đối tượng không kết nối trực
tiếp với cơ sở dữ liệu.
6
ADO.NET
7
Kiến trúc ADO.NET
8
Data Providers
ADO.NET Data Providers
Là các lớp truy xuất dữ liệu nguồn
Microsoft SQL Server
Oracle
Microsoft Access
Thiết lập kết nối giữa DataSets và dữ liệu nguồn
Có 2 thư viện ADO.NET Data Providers
System.Data.OleDb: Dùng truy xuất cơ sở dữ liệu OLE
System.Data.SqlClient: Truy xuất SQL Server
9
Data Providers
ADO.NET Data Providers
10
Connection
11
Kết nối CSDL với quyền chứng thực của
Windows trong C#
Khi kết nối với CSDL SQL Server với quyền chứng
thực của Windows thì chuỗi kết nối sẽ không tồn tại
hai thuộc tính User Id và Password
Chuỗi kết nối sẽ có thuộc tính Integrated Security =
SSPI hoặc Integrated Security = True
12
Kết nối CSDL với quyền chứng thực của SQL
Server trong C#
Trong trường hợp chúng ta muốn kết nối với SQL
Server bằng quyền chứng thực của SQL Server thì
chỉ cần thay Integrated Security=True bằng hai
thông số User Id và PWD
❑ User Id: Tài khoản được tạo bởi SQL Server
❑ PWD: Mật khẩu của tài khoản muốn kết nối
13
Tập tin lưu trữ chuỗi kết nối
Thường sử dụng các loại định dạng file như: *.ini,
*.txt
Trong Winform thường dùng file App.config với cấu
trúc nội dung được tổ chức theo dạng XML
<configuration>
<startup>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.7.2" />
</startup>
<connectionStrings>
<add name="SqlServer"
connectionString="Server=(local);database=hoadon;uid=sa;pwd=hihipass"
providerName="System.Data.SqlClient"></add>
</connectionStrings>
</configuration>
14
Connection
❖Chuỗi kết nối bao gồm:
▪ Data Source: tên_máy_hay_IP[\tênSqlServer]
▪ Initial Catalog : tên_dữ_liệu_trong_SQLServer
▪ Integrated Security: True/False
▪ User ID : tên_login_trong_SQLServer
▪ Password: mật_khẩu
VD:
“Data Source =
LHTTUNG\\SQLTUNGINSTANCE; Initial
Catalog = QLBH; Integrated Security=True;
User Id = sa; Password = 123”
15
Connection
16
Command
17
Command
SqlConnection cnn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
cnn.ConnectionString = “Data
Source=LHTTUNG\\SQLTUNGINSTANCE; Initial Catalog = QLBH;
Integrated Security=True; User Id = sa; Password = 123”;
cmd.Connection = cnn;
cmd.CommandText = “SELECT COUNT(*) FROM HoaDon”;
cmd.CommandType = CommandType.Text;
cnn.Open();
//Đếm số hóa đơn
int count = (int)cmd.ExecuteScalar();
cnn.Close();
18
Command
SqlConnection cnn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
cnn.ConnectionString = “…”;
cmd.Connection = cnn;
cmd.CommandText =
“INSERT INTO LoaiSanPham(MaLoai, TenLoai)” +
“VALUES(1, “Quần áo”)”;
cmd.CommandType = CommandType.Text;
cnn.Open();
//Thực thi câu truy vấn Insert
cmd.ExecuteNonQuery();
cnn.Close();
19
Command
SqlConnection cnn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
cnn.ConnectionString = “…”;
cmd.Connection = cnn;
cmd.CommandText =“Select MaSP, TenSP From SanPham”;
cmd.CommandType = CommandType.Text;
cnn.Open();
// Thực thi câu truy vấn Select
SqlDataReader reader= cmd.ExecuteReader();
//Duyệt trên kết quả reader
while (reader.Read()) {
Console.WriteLine(“San pham: {0} – {1}”, reader.getString(0),
reader.getString(1));
}
cnn.Close();
20
Command - Parameter
❖Mục đích sử dụng:
▪ Một vài giá trị trong câu lệnh chỉ biết khi thực hiện
câu lệnh.
▪ Cần thực hiện câu lệnh nhiều lần với các giá trị
khác nhau.
❖Các bước thực hiện:
▪ Tham số hóa câu lệnh: @[tên tham số].
▪ Tạo các parameters tương ứng cho command.
▪ Đặt giá trị cho các parameter mỗi khi dùng
command thực hiện câu lệnh.
21
Command - Parameter
❖Tham số hóa:
cmd.CommandText =
“SELECT * FROM SanPham WHERE TenSP= @ten”;
cmd.CommandText =
“INSERT INTO SanPham(MaSP, TenSP, SoLuong)
VALUES(@ma, @ten, @soluong)”;
22
Command - Parameter
❖Tạo các parameter cho Command:
cmd.Parameters.Add(“@ma”, SqlDbType.Int);
cmd.Parameters.Add(“@ten”, SqlDbType.NVarChar);
cmd.Parameters.Add(“@soluong”,SqlDbType.Float);
23
Command - Parameter
❖Đặt giá trị cho các parameter:
cmd.Parameters[“@ma”] = sp.MaSP;
cmd.Parameters[“@ten”] = sp.TenSP;
cmd.Parameters[“@soluong”] = sp.SoLuong;
cmd.ExecuteNonQuery();
24
DataAdapter
Dùng để lấy dữ liệu từ dữ liệu nguồn vào DataSet
và để cập nhật dữ liệu từ DataSet vào dữ liệu
nguồn
OleDbDataAdapter làm việc với CSDL MS Access
SqlDataAdapter làm việc với dữ liệu SQL Server
25
DataAdapter
Thuộc tính và phương thức của DataAdapter:
Fill(DataSet):
dùng SelectCommand lấy dữ liệu
từ Data Source đổ vào DataSet.
Update(DataSet): dùng InsertCommand,
UpdateCommand và DeleteCommand cập
nhật dữ liệu trong DataSet vào Data Source.
26
DataAdapter
27
DataSet
28
DataSet
29
DataSet
30
DataTable
DataTable thể hiện một bảng trong cơ sở dữ
liệu.
Các thuộc tính và phương thức:
TableName: tên bảng.
Columns: danh sách các cột (DataColumn).
Rows: danh sách các mẩu tin (DataRow).
PrimaryKey:danh sách các cột làm khóa chính
(DataColumn).
NewRow(): tạo một mẫu tin mới.
31
DataColumn
DataColumn thể hiện một cột trong bảng.
Các thuộc tính và phương thức:
ColumnName: tên cột.
DataType: kiểu dữ liệu cột.
32
DataRow
DataRow thể hiện một mẫu tin trong bảng.
Các thuộc tính và phương thức:
RowState: trạng thái của mẫu tin (Added, Modified,
Deleted, Unchanged, Detach).
Toán tử [i]: truy xuất đến cột i của mẫu tin.
Delete(): đánh dấu xóa mẫu tin.
33
DataTable
DataTable table = new DataTable(“SanPham”);
table.Columns.Add(new DataColumn(“MaSP”
Type.GetType(“string”));
table.Columns.Add(new DataColumn(“TenSP”,
Type.GetType(“string”));
table.PrimaryKey = new DataColumn[] {
table.Columns[“MaSP”] };
DataRow row = table.NewRow();
row[“MaSP”] = “123”;
row[“TenSP”] = “Mì ăn liền Hảo Hảo”;
table.Rows.Add(row);
34
DataTable
SqlDataAdapter da = new SqlDataAdapter(
“SELECT * FROM SanPham”,“ConnectionString…”);
SqlCommandBuilder sqlcombd =
new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
foreach (DataRow row in ds.Tables[0].Rows)
row[“TenSP”] = “Mì ăn liền Aone”;
da.Update(ds); // Cập nhật vào CSDL
35
DataTable
SqlDataAdapter da = new SqlDataAdapter(
“SELECT * FROM SanPham”, “ConnectionString…”);
SqlCommandBuilder sqlcombd =
new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
foreach (DataRow row in ds.Tables[0].Rows)
if (row[“MaSP”] == “245”)
row.Delete();
da.Update(ds);
36
DataGridView
DataGirdView: Thể hiện bảng dữ liệu
DataSource: Chỉ nơi cung cấp dữ liệu (là DataSet
hay DataTable, hay DataView).
DataMember: Xác định cụ thể thành phần bên trong
DataSource dùng cho thể hiện.
37
DataGridView
DataSet ds = new DataSet();
SqlConnection cnn = new SqlConnection(“…”);
cnn.Open();
SqlCommand cmd = new SqlCommand(
"select * from SanPham", cnn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds, “SP");
cnn.Close();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = “SP";
38
ComboBox
ComboBox: Thể hiện 1 trường dữ liệu cho lựa
chọn
DataSource: Chỉ nơi cung cấp dữ liệu
DisplayMember: Chỉ trường thể hiện dữ liệu trên
ComboBox.
ValueMember: Chỉ trường dữ liệu mà sẽ cho ra
giá trị khi người dùng lựa chọn trên combobox.
39
ComboBox
SqlConnection cnn = new SqlConnection(“...”);
cnn.Open();
SqlCommand cmd = new SqlCommand(
"select * from LoaiSanPham", cnn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds, “loai");
cnn.Close();
comboBox1.DataSource = ds;
comboBox1.DisplayMember = “TenLoai";
comboBox1.ValueMember = "MaLoai";
40
Thực hành
41
Thực hành
42
Bài 1: Đưa dữ liệu lên ListBox
43
Bài 2: Đưa dữ liệu lên ComboBox
44
Bài 3: Đưa dữ liệu lên DataGridView
45
Bài 4: Tìm kiếm sản phẩm
46
Bài 5: Lọc sản phẩm theo loại
47
Bài 6: TreeView và DataGridView
48
Bài 7: Phân trang dữ liệu
49
Bài 8: Thêm, sửa, xóa dữ liệu
50