DataAdapter chỉ thao tác với một nguồn dữ liệu qua một đối tượng connection đang kết nối, khi Connection chưa mở thì DataAdapter sẽ tự động mở kết nối khi cần và đóng lại.[r]
(1)Chương 6:
CÁC ĐỐI TƯỢNG TRONG ADO.NET
Giảng Viên: ThS Dương Thành Phết
Email: phetcm@gmail.com – YahooID: phetcm Website: http://www.thayphet.net
(2)NỘI DUNG
1.Đối tượng Connection 2.Đối tượng Command
3.Đối tượng DataReadder 4.Đối tượng Dataset
5.Đối tượng DataAdapter
(3) Vai trò Connection ADO.net tạo kết nối ứng dụng với CSDL
Khi cthực kết nối cần xác định thông tin cho Connection thơng qua thuộc tính Connection String Tùy thuoc vào Data Provider
Với SQLServer • Server name • Database name • User name
• Password
Với Access
• Database name • User name
(4) Thuộc tính
ConnectionString: Chuỗi kết nối DataSource
State: Tình trạng kết nối: Connecting (đang kêt
nối), Open (đã kêt nối), Broken (kết nối bị ngắt kết nối), Closed (kết nối đóng)
Phương thức
Open(): Thiết lập kết nối đến DS
Close(): Đóng kết nối với DS
(5)Các bước tạo kết nối
Bước 1: Khởi tạo đối tượng Connection với tham số connection string database tương ứng
Bước 2: Thiết lập kết nối đến database phương thức Open
Bước 3: Thực thao tác khai thác liệu (select, insert, delete, update) từ database
(6)using System.Data.SqlClient;
SqlConnection cnn = new SqlConnection(); cnn.ConnectionString =
server=localhost; database=Northwind; uid=sa; pwd=sa"; cnn.Open(); //Mở kết nối
//xử lý q trình kết nối …
cnn.Close(); //Đóng két nối
1 ĐỐI TƯỢNG CONNECTION
Sử dụng tên miền: System.Data.SqlClient; Server: Chỉ định tên máy chứa Database Database: Chỉ định tên sở liệu
Uid: Tên tài khỏan đăng nhập SQLServer (nếu có) Pwd: Mật đăng nhập (nếu có)
(7)using System.Data.SqlClient;
SqlConnection cnn = new SqlConnection();
cnn.ConnectionString = “Data Source=localhost;
Initial Catalog=Northwind; UserId=sa; Password=sa”
cnn.Open(); //Mở kết nối
//xử lý q trình kết nối …
cnn.Close(); //Đóng két nối
DataSource: Chỉ định tên máy chứa Database Initial Catalog: Chỉ định tên sở liệu
Userid: Tên tài khỏan đăng nhập SQLServer (nếu có) Password: Mật đăng nhập (nếu có)
(8)using System.Data.OleDb;
OleDBConnection cnn = new OleDbSqlConnection();
cnn.ConnectionString = “Provider = Microsoft.Jet.OLEDB.4.0;
Data Source=QLHOCSINH.MDB"; cnn.Open();
//xử lý trình kết nối cnn.Close();
Tạo kết nối với MS Access
Đối với MS Access 2007/2010 Provider=Microsoft.ACE.OLEDB.12.0
(9)Minh họa:
using System.Data.SqlClient;
SqlConnection cnn = new SqlConnection();
private void btLogin_Click(object sender, EventArgs e) {
String Tenmay = txtServername.Text; String TenDN = txtUsername.Text; String Matkhau = txtPassword.Text;
String TenCSDL = txtDatabasename.Text;
cnn.ConnectionString = "Server=" + Tenmay + "; Database=" + TenCSDL + " ; User Id=" + TenDN + "; Password= " + Matkhau;
try {
cnn.Open();
MessageBox.Show("Kết nối thành công", "Thông báo"); cnn.Close();
} catch {
MessageBox.Show("Kết nối thất bại", "Thông báo"); }
(10)2 ĐỐI TƯỢNG COMMAND
Quá trình tương tác với database cần phải biết hành động muốn xảy Điều thực đối tượng command
Dùng đối tượng command để gửi câu lệnh SQL tới database
Một đối tượng command dùng đối tượng connection để xác định database truy xuất
(11) Thuộc tính:
Connection:Kết nối để thực lệnh
CommandText:Câu lệnh cần thực
CommandType:Loại câu lệnh (Text, TableDirect, StoredProc)
Phương thức:
ExecuteScalar(): Thực lệnh trả giá trị đơn
ExecuteNonQuery(): Gọi lệnh SQL, store, trả số row bị tác động (Insert, Update, Delete…)
(12)SqlConnection cnn = new SqlConnection();
cnn.ConnectionString = “Data Source=localhost;
Initial Catalog=QLsinhvien; User Id=sa; Password=sa”
cnn.Open(); //Mở kết nối
SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn;
cmd.CommandText =
“Select Count(*) From TableName”; int n = (int) cmd.ExecuteScalar();
cnn.Close();
2 ĐỐI TƯỢNG COMMAND
(13)
SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn;
String MaMH = txtMaMH.Text; String TenMH = txtTenMH.Text; int Sotiet = int.Parse(txtSotiet.Text);
cmd.CommandText = "Insert into Monhoc(MaMH,TenMH, Sotiet) values('" + MaMH + "',N'" + TenMH +"'," + Sotiet +")"; cmd.ExecuteNonQuery();
(14)3 ĐỐI TƯỢNG DATAREADER
Nhiều thao tác liệu lấy luồng liệu để đọc Đối tượng data Reader cho phép lấy kết câu lệnh SELECT từ đối tượng command
Để tăng hiệu suất, liệu trả từ data reader luồng liệu fast forward-only có lợi mặt tốc độ
Là đối tượng truy cập liệu trực tiếp sử dụng trỏ phí Server trì kết nối suốt trình đọc liệu
(15)Các thuộc tính
FieldCout: Số cột dịng hành DataReader
IsClosed: Cho biết dataReader đóng
(16)3 ĐỐI TƯỢNG DATAREADER
Các phương thức
Close: Đóng DataReader
GetFieldType: Trả kiểu liệu cột truyền vào
GetName: Trả tên cột truyền vào
GetValue: Trả trị cột truyền vào
Read : Di chuyển đến dòng trả true dòng để di chuyển, ngược lại trả False
(17)
SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn;
cmd.CommandText = "Select * From Monhoc"; cmd.CommandType = CommandType.Text; SqlDataReader dr ;
dr = cmd.ExecuteReader(); lstMonhoc.Items.Clear(); while (dr.Read())
(18)4 DATA ADAPTER
4.1 Giới thiệu
Để lầy liệu từ nguồn liệu vầ cho ứng dụng, sử dụng đối tượng gọi DataAdapter Đối tượng cho phép ta lấy cấu trúc liệu bảng nguồn liệu
DataAdapte gồm đối tượng command:
SelectCommand: Cho phép lấy thông tin từ nguồn
InsertCommand: Cho phép thêm liệu vào bảng
UpdateCommand: Cho phép điều chỉnh liệu bảng
(19) Đôi cần làm việc chế độ read-only cần thay đổi liệu nguồn, cần lưu trữ tạm liệu nhớ để hạn chế truy xuất đến database Data adapter làm điều dễ dàng cách giúp quản lý liệu chế độ ngắt kết nối
(20)4 DATA ADAPTER
4.2 Tạo DataAdapter
<Loai>DataAdapter <Tên> =
new <Loai>DataAdapter(Lệnh, biến connnection);
Với SQLSever:
sqlDataAdapterDataAdapter <Tên> =
new SQLDataAdapter(Lệnh, biến connection);