[go: up one dir, main page]

Academia.eduAcademia.edu
Khoa CNTT CNPM LẬP TRÌNH KẾT NỐI CSDL ADO.NET Phạm Hoàng Hải C4W - 1 Khoa CNTT CNPM 1. NỘI DUNG    Tổng quan về ADO.Net Mô hình kết nối Mô hình phi kết nối Phạm Hoàng Hải C4W - 2 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET  Các thế hệ của lập trình kết nối CSDL Phạm Hoàng Hải C4W - 3 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET M C TIÊU BÀI HỌC    Tìm hiểu về ADO.Net Các mô hình kết nối CSDL (Connected & Disconnected) Dùng VS.Net (VB.Net) xây dựng ứng dụng kết nối CSDL ADO.Net ADO.NET Phạm Hoàng Hải C4W - 4 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET GIỚI THIỆU  ADO.NET là một tập các lớp thư viện được sử dụng để truy xuất dữ liệu Thêm/xóa/sửa dữ liệu Đọc dữ liệu Chương trình  CSDL, XML… Nằm trong bộ thư viện các lớp cơ sở của .Net Framework Phạm Hoàng Hải C4W - 5 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET VỊ TRÍ C A ADO.NET  ADO.NET là thành phần nội tại của .Net Framework  có thể sử dụng trong các ngôn ngữ hỗ trợ .Net (C#, VB.Net, ...) ASP.NET Windows Forms Class Framework Drawing XML Data ADO.NET Comman language Runtime System Services   Các lớp ADO.Net đặt trong System.Data Chức năng và cách sử dụng hoàn toàn giống nhau. Phạm Hoàng Hải C4W - 6 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET ADO vs ADO.Net Phạm Hoàng Hải C4W - 7 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET ADO vs ADO.Net  ADO kết nối CSDL tốt, nhưng    Xử lý kết nối CSDL qua Internet khó khăn và không tốt. ADO.Net    Đòi hỏi kết nối chuẩn COM và Windows Tích hợp chặt chẽ với XML Làm việc tốt trên môi trường Internet. ADO.Net là sự cải tiến của ADO   Khác biệt nhau ở mô hình (COM vs XML) Giống nhau về các chức năng. Phạm Hoàng Hải C4W - 8 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET ADO vs ADO.Net Khác biệt về mô hình Phạm Hoàng Hải Thuận lợi/khó khăn kết nối Internet C4W - 9 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET .Net DATA PROVIDER  .NET Data Provider   Dùng để kết nối đến CSDL, thực hiện các câu lệnh, và nhận kết quả trả về. Hiện có 3 loại data provider chính ODBC ODBC Driver OLE DB Provider OLE DB RDBMS SQL Provider Command OLE DB Application Connection ODBC RDBMS SQL SERVER .NET Data Provider Data Reader Data Adapter Phạm Hoàng Hải SQL Server C4W - 10 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET CÁC LỚP ĐỐI TƯỢNG TRONG ADO.NET  .NET Data Provider  Các thành phần của .NET Data Provider Phạm Hoàng Hải C4W - 11 Khoa CNTT CNPM 2. TỔNG QUAN VỀ ADO.NET CÁC LỚP ĐỐI TƯỢNG TRONG ADO.NET     Connection: Là đối tượng có nhiệm vụ thực hiện nhiệm vụ kết nối đến CSDL Command: Dùng để thực hiện các câu lệnh SQL thao tác với CSDL như: Insert, Update, Select, Delete DataReader: Dùng để đón nhận kết quả trả về từ đối tượng Command DataAdapter: Có chức năng như một cầu nối giữa nguồn (tệp) dữ liệu và các bảng được cached trong bộ nhớ Phạm Hoàng Hải C4W - 12 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI - PHI KẾT NỐI  Mô hình kết nối (Connected Model) Chương trình  Mô hình phi kết nối (Disconnected Model) Chương trình Phạm Hoàng Hải C4W - 13 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL   Kết nối vào CSDL Thực hiện lệnh   Thêm/Xóa/Sửa dữ liệu Đọc dữ liệu từ CSDL Command Connection Chương trình DataReader Phạm Hoàng Hải C4W - 14 Khoa CNTT CNPM VÍ D  Xây dựng ứng dụng QLHS  Yêu cầu : Tiếp nhận học sinh Phạm Hoàng Hải C4W - 15 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL CONNECTION  Connection: Kết nối vào CSDL  Các lớp phụ trách kết nối ODBCConnection OleDBConnection SqlConnection OracleConnection  Thuộc tính quan trọng  Phương thức quan trọng ConnectionString: xác định nguồn dữ liệu cần kết nối Open: mở kết nối Close: đóng kết nối Phạm Hoàng Hải C4W - 16 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL CONNECTION  Kết nối vào CSDL  Ví dụ: kết nối vào Access OleDbConnection cnn = new OleDbConnection(); cnn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=hocsinh.mdb“; cnn.Open(); //Các lệnh cần thực hiện Phạm Hoàng Hải Khoa CNTT - 1/18/2011 17 C4W - 17 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL CONNECTION  Kiểm tra kết nối: Sau khi gọi phương thức Open, có thể xem đã kết nối thành công hay không thông qua thuộc tính State của Connection.  Ví dụ: if (con.State.ToString() = "Open" ) C4W - 18 Phạm Hoàng Hải 18 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL CONNECTION   Đóng kết nối: Thi hành phương thức Close() để đóng kết nối Để tránh lỗi ta nên kiểm tra trạng thái kết nối  Ví dụ: If (con.State.ToString() == "Open") con.Close(); Phạm Hoàng Hải C4W - 19 Khoa CNTT  CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL COMMAND Command: Thực hiện lệnh  Các lớp phụ trách  ODBCCommand  OleDBCommand  SqlCommand    OracleCommand Thuộc tính quan trọng  Connection: xác định CSDL sẽ thực hiện thao tác  CommandText: xác định thao tác cần thực hiện  Parameters: xác định các tham số lệnh Phương thức quan trọng  ExecuteReader: phù hợp lệnh Select trả ra 1 bảng dữ liệu  ExecuteScalar: phù hợp lệnh Select trả ra 1 giá trị  ExecuteNonQuery: phù hợp lệnh Insert, Delete, Update Phạm Hoàng Hải C4W - 20 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL COMMAND  Các cách để tạo Command  Tạo Command từ phương thức tạo dựng OleDbCommand com = new OleDbCommand("select * from sinhvien", con);  Tạo command từ phương thức CreateCommand của đối tượng Connection OleDbCommand com = con.CreateCommand(); command.CommandText = "select * from sinhvien“;  Tạo Command bằng cách đặt các thuộc tính sau khi khai báo OleDbCommand com =new OleDbCommand(); com.CommandType = CommandType.Text; com.CommandText ="Select * from sinhvien"; com.Connection = con; Phạm Hoàng Hải C4W - 21 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL COMMAND  Ví d OleDbCommand cmd = new OleDbCommand(); cmd.Connection = connect; cmd.CommandText = "insert into Hocsinh values(@Ma,@HoTen,@Diachi,@NgaySinh,@Toan,@Van)“; OleDbParameter para = cmd.Parameters.Add("@Ma",OleDbType.Integer) para.Value=1; para=cmd.Parameters.Add("@HoTen",OleDbType.VarWChar) para.Value="Lê Văn A“; para=cmd.Parameters.Add("@Diachi",OleDbType.VarWChar) para.Value="Nguyễn Văn Cừ“; para = cmd.Parameters.Add("@Ngaysinh", OleDbType.Date) para.Value = new DateTime(1982,10,1); para=cmd.Parameters.Add("@Toan",OleDbType.Integer); para.Value=5; para=cmd.Parameters.Add("@Van",OleDbType.Integer); para.Value=7; cmd.ExecuteNonQuery(); Phạm Hoàng Hải C4W - 22 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL READER  Reader: Thực hiện lệnh    Đọc dữ liệu từ CSDL Dùng lệnh ExecuteReader hoặc ExecuteScalar Lớp XXXDataReader  Read Book BookNam Author  GetXXX ID e  IsDBNull Dữ liệu chỉ đọc theo chiều tiến (Readonly) Phạm Hoàng Hải 1 Book 1 Author 1 2 Book 2 Author 2 3 Book3 Author 3 C4W - 23 Khoa CNTT CNPM 3. MÔ HÌNH KẾT NỐI CONNECTED MODEL READER  Reader: Thực hiện lệnh   Đọc dữ liệu từ CSDL Ví dụ OleDbDataReader rd = cmd.ExecuteReader(); while (rd.Read()) { if (!rd.IsDBNull(3)) Console.WriteLine(rd.GetDateTime(3)); } Phạm Hoàng Hải C4W - 24 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL DataAdapter Chương trình Phạm Hoàng Hải C4W - 25 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL Ánh xạ DataSet DataSet Data Source DataTable Tables Relations Columns DataColumn Rows DataRow DataRelation Phạm Hoàng Hải C4W - 26 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL  DataSet    Đối tượng DataSet được coi như một kho chứa các bảng (Table). Người sử dụng có thể thay đổi dữ liệu trong các bảng này và khi muốn cập nhật vào cơ sở dữ liệu thì thi hành phương thức Update của đối tượng DataAdapter. Các bảng trong DataSet có thể do DataAdapter Fill vào hoặc cũng có thể là các bảng được tạo thành từ đối tượng DataTable. Các bảng này được quản lý bởi tập hợp Tables của lớp DataSet Phạm Hoàng Hải C4W - 27 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL  DataTable  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. Phạm Hoàng Hải C4W - 28 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL  DataTable Phạm Hoàng Hải C4W - 29 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL  DataRow  RowState: trạng thái của mẫu tin (Added, Modified, Deleted, Unchanged…).  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. Phạm Hoàng Hải C4W - 30 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL  DataColumn  ColumnName: tên cột.  DataType: kiểu dữ liệu cột. Phạm Hoàng Hải C4W - 31 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL DataAdapter SelectCommand DataSet InsertCommand UpdateCommand Data Source DeleteCommand Fill: dùng SelectCommand lấy dữ liệu từ Data Source đổ vào DataSet. Update: dùng InsertCommand, UpdateCommand và DeleteCommand cập nhật dữ liệu trong DataSet vào Data Source. Phạm Hoàng Hải C4W - 32 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL  Thực hiện lệnh    Đọc dữ liệu từ CSDL Xử lý dữ liệu Cập nhật dữ liệu xuống CSDL DataAdapter Chương trình Phạm Hoàng Hải C4W - 33 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL  Đọc dữ liệu từ CSDL OleDbDataAdapter da = new OleDbDataAdapter( "select * from HocSinh", cnn); DataSet dsHocSinh = new DataSet(); da.Fill(dsHocSinh, "HocSinh"); for (int i = 0; i < dsHocSinh.Tables("HocSinh“).Rows.Count; i++) { listBox1.Items.Add( dsHocSinh.Tables["HocSinh"].Rows[i]["HoTen"]. ToString()); } Phạm Hoàng Hải C4W - 34 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL  Xử lý dữ liệu  Thêm dữ liệu DataRow newRow; newRow = dsHocSinh.Tables["HocSinh"].NewRow(); newRow[0] = 10; newRow[1] = "Lê Thị B“;   dsHocSinh.Tables["HocSinh"].Rows.Add(newRow); Xoá dữ liệu dsHocSinh.Tables["HocSinh"].Rows[0].Delete(); Thay đổi dữ liệu DataRow row; row = dsHocSinh.Tables["HocSinh"].Rows[1]; row.BeginEdit(); row[0] = 11; row[1] = "Lê Thị C"; row.EndEdit(); C4W - 35 Phạm Hoàng Hải 35 Khoa CNTT CNPM 4. MÔ HÌNH PHI KẾT NỐI DISCONNECTED MODEL  Cập nhật dữ liệu xuống CSDL OleDbCommandBuilder buider = new OleDbCommandBuilder(da); da.Update(dsHocSinh, "HocSinh"); Phạm Hoàng Hải C4W - 36 Khoa CNTT CNPM 5. CÂU HỎI Phạm Hoàng Hải C4W - 37