Lập trình hướng đối tượng 2 - Kết nối cơ sở dữ liệu
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình hướng đối tượng 2 - Kết nối cơ sở dữ liệu", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- lap_trinh_huong_doi_tuong_2_ket_noi_co_so_du_lieu.ppt
Nội dung text: Lập trình hướng đối tượng 2 - Kết nối cơ sở dữ liệu
- LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2 KẾT NỐI CƠ SỞ DỮ LIỆU
- Lịch sử phát triển
- Lịch sử phát triển
- Kiến trúc ADO.NET
- 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
- ADO.NET ❖ADO.NET = ActiveX Data Objects ❖Các đối tượng ADO.NET chứa trong không gian tên 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.
- ADO.NET
- Kiến trúc ADO.NET
- 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
- Data Providers ❖ADO.NET Data Providers
- Connection ❖ Thuộc tính và phương thức của Connection: ▪ ConnectionString: loại Data Source cần kết nối. ▪ Open(): thiết lập kết nối đến Data Source. ▪ Close(): ngắt kết nối đến Data Source.
- 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=(local); Initial Catalog = QLBH; Integrated Security=True; User Id = sa; Password = 123”
- Connection SqlConnection cnn = new SqlConnection(); cnn.ConnectionString = “Data Source=(local); Initial Catalog = QLBH; Integrated Security=True; User Id = sa; Password = 123”; cnn.Open(); // Code xử lý. cnn.Close();
- Command ❖ Thuộc tính và phương thức của Command: ▪ Connection: kết nối dùng để thực hiện câu lệnh. ▪ CommandText: câu lệnh cần thực hiện trên Data Source. ▪ CommandType: loại câu lệnh trong CommandText (Text, TableDirect, StoredProc). ▪ ExecuteScalar(): thực hiện câu lệnh trong CommandText, kết quả trả về là một giá trị đơn. ▪ ExecuteNonQuery(): thực hiện câu lệnh trong CommandText và không có kết quả trả về. ▪ ExecuteReader(): thực hiện câu lệnh trong CommandText, kết quả trả về là một DataReader.
- Command SqlConnection cnn = new SqlConnection(); SqlCommand cmd = new SqlCommand(); cnn.ConnectionString = “Data Source=(local); 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();
- 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();
- 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();
- 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.
- 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)”;
- 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);
- Command - Parameter ❖Đặt giá trị cho các parameter: foreach (SanPham sp in list) { cmd.Parameters[“@ma”] = sp.MaSP; cmd.Parameters[“@ten”] = sp.TenSP; cmd.Parameters[“@soluong”] = sp.SoLuong; cmd.ExecuteNonQuery(); }
- 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
- 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.
- DataAdapter SqlConnection cnn = new SqlConnection(“ ”); cnn.Open(); SqlCommand cmd = new SqlCommand( “Select MaSP, TenSP from SanPham”, cnn); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds, “sp” ); // Đổ kết quả vào DataSet cnn.Close();
- DataSet ❖ DataSet là cơ sở dữ liệu được lưu trữ trong bộ nhớ chính (in-memory database). ❖ Cơ chế không kết nối
- DataSet
- DataSet
- 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.
- 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.
- 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.
- 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);
- 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
- 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);
- 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.
- 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 = scmd; da.Fill(ds, “SP"); cnn.Close(); dataGridView1.DataSource = ds; dataGridView1.DataMember = “SP";
- 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.
- 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";
- Thực hành
- Thực hành
- Bài 1: Đưa dữ liệu lên ListBox
- Bài 2: Đưa dữ liệu lên ComboBox
- Bài 3: Đưa dữ liệu lên DataGridView
- Bài 4: Tìm kiếm sản phẩm
- Bài 5: Lọc sản phẩm theo loại
- Bài 6: TreeView và DataGridView
- Bài 7: Phân trang dữ liệu
- Bài 8: Thêm, sửa, xóa dữ liệu