bài 6 lập trình với csdl kiến trúc kết nối và buộc dữ liệu

47 1.3K 1
bài 6 lập trình với csdl kiến trúc kết nối và buộc dữ liệu

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài 6: LẬP TRÌNH VỚI CSDL KIẾN TRÚC KẾT NỐI & BUỘC DỮ LIỆU Hệ thống cũ Giới thiệu ADO.NET Các thành phần ADO.NET DataProvider DataSet Các loại DataProvider Sql Data Provider SqlConnection SqlDataAdapter Lập trình với CSDL - Kiến trúc kết nối & buộc liệu Mục tiêu học Thao tác sử dụng kiến trúc kết nối SqlCommand SqlDataReader BindingSource Điều hướng liệu Lọc liệu File config Lập trình với CSDL - Kiến trúc kết nối & buộc liệu THAO TÁC VỚI DỮ LIỆU BẰNG KIẾN TRÚC KẾT NỐI Lập trình với CSDL - Kiến trúc kết nối & buộc liệu Kiến trúc kết nối Kiến trúc kết nối Ứng dụng kết nối với CSDL giữ kết nối đóng Ưu điểm: Đọc liệu nhanh chóng kết nối trực tiếp với CSDL Nhược điểm: Ứng dụng kết nối với CSDL không thực thao tác với CSDL  lãng phí tài nguyên  Server tải Lập trình với CSDL - ADO.Net & Kiến trúc khơng kết nối Kiến trúc kết nối Truy vấn CSDL Command kết nối với CSDL thơng qua Connection, sau Command thực thi lệnh select trả kết DataReader chứa ghi Ứng dụng sử dụng DataReader để đọc ghi Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối Kiến trúc kết nối Thay đổi CSDL Command kết nối với CSDL thông qua đối tượng Connection thực thi lệnh SQL trực tiếp CSDL (lệnh insert, delete…) Lập trình với CSDL - ADO.Net & Kiến trúc không kết nối SqlCommand Thực thi câu lệnh sql CSDL kết nối đến Hỗ trợ kiến trúc kết nối Phương thức khởi tạo new SqlCommand() new SqlCommand(lệnh-sql) New SqlCommand(lệnh-sql, Connection) Thuộc Thuộc tính tính Mơ tả Connection Đối tượng Connection sử dụng để kết nối với CSDL CommandText Lệnh Sql tên stored procedure CommandType Tên kiểu liệt kê CommandType xác định giá trị CommandText biên dịch Parameters Chứa collection tham số cho lệnh Lập trình với CSDL - Kiến trúc kết nối & buộc liệu SqlCommand Thực thi câu lệnh sql CSDL kết nối đến Hỗ trợ kiến trúc kết nối Phương thức khởi tạo new SqlCommand() new SqlCommand(lệnh-sql) New SqlCommand(lệnh-sql, Connection) Thuộc Thuộc tính tính Mơ tả Connection Đối tượng Connection sử dụng để kết nối với CSDL CommandText Lệnh Sql tên stored procedure CommandType Tên kiểu liệt kê CommandType xác định giá trị CommandText biên dịch Parameters Chứa collection tham số cho lệnh Lập trình với CSDL - Kiến trúc kết nối & buộc liệu SqlCommand Phương thức Phương thức Mô tả ExecuteReader() Thực thi truy vấn CommandText trả kết SqlDataReader ExecuteNoneQuery() Thực thi lệnh sql CommandText trả số dòng mà lệnh thao tác ExecuteScalar() Thực thi truy vấn CommandText trả cột dòng tập kết Kiểu liệt kê CommandType Thành viên Mô tả Text CommandText chứa lệnh sql (mặc định) StoredProcedure CommandText chứa tên stored procedure TableDirect CommandText chứa tên bảng Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 10 Demo lưu lấy chuỗi kết nối từ file config B3 Lấy chuỗi kết nối Lưu ý: để sửa dụng lớp ConfigurationManager phải add thêm assembly vào Vào Project  Add Reference…  chọn System.Configuration string connectionString = ConfigurationManager.ConnectionStrings ["ProductDBConnectionString"].ToString(); SqlConnection conn = new SqlConnection(connectionString); Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 33 xử lý kiện với mơ hình tầng Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 34 Demo đọc liệu từ SqlDataReader connection.Open(); SqlDataReader custReader = selectCommand.ExecuteReader(CommandBehavior.SingleRow); if (custReader.Read()) { Customer customer = new Customer(); customer.CustomerID = (int)custReader["CustomerID"]; customer.Name = custReader["Name"].ToString(); customer.Address = custReader["Address"].ToString(); customer.City = custReader["City"].ToString(); customer.State = custReader["State"].ToString(); customer.ZipCode = custReader["ZipCode"].ToString(); return customer; } connection.Close(); Đóng mở Connection thao tác với Command để thực thi lệnh Sql Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 35 Demo thao tác với liệu kiến trúc kết nối Sử dụng phương thức ExecuteReader SqlCommand để lấy liệu Sử dụng SqlDataReader để đọc liệu vào form Sử dụng phương thức ExecuteNoneQuery SqlCommand để thêm, sửa, xóa liệu Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 36 Demo ứng dụng Customer Maintenance Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 37 Demo xử lý kiện Button GetCustomer private void btnGetCustomer_Click(object sender, EventArgs e) { int customerID = Convert.ToInt32(txtCustomerID.Text); //Tạo kết nối SqlConnection connection = new SqlConnection ("chuỗi-kết-nối"); //Tạo command string selectStatement = "SELECT CustomerID, Name, Address, City, State, ZipCode " + "FROM Customers WHERE CustomerID = @CustomerID"; SqlCommand selectCommand = new SqlCommand(selectStatement, connection); selectCommand.Parameters.AddWithValue("@CustomerID", customerID); //Đọc liệu gán cho trường connection.Open(); SqlDataReader custReader = selectCommand.ExecuteReader(); if (custReader.Read()) { txtName.Text = custReader["Name"].ToString(); … } Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 38 connection.Close(); } Demo xử lý kiện Accept form Add Customer private void btnAccept_Click(object sender, EventArgs e) { string name = txtName.Text; string address = txtAddress.Text; string city = txtCity.Text; string state = cboStates.SelectedValue.ToString(); string zipCode = txtZipCode.Text; SqlConnection connection = MMABooksDB.GetConnection(); string insertStatement = "INSERT Customers " + "(Name, Address, City, State, ZipCode) " + "VALUES ('"+name+"','"+ address+"','"+city+"','"+ state+"','"+zipCode+"')"; SqlCommand insertCommand = new SqlCommand(insertStatement, connection); connection.Open(); insertCommand.ExecuteNonQuery(); connection.Close(); Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 39 Tổ chức ứng dụng Ứng dụng tổ chức theo mơ hình tầng sau: Tầng hiển thị: Form Tầng xử lý nghiệp vụ: Customer, State Tầng CSDL: CustomerDB, MMABookDB, StateDB Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 40 Demo viết xử lý kiện GetCustomer với mơ hình tầng frmCustomer gọi đến lớp CustomerDB để thao tác với CSDL Dữ liệu truyền CustomerDB frmCustomer thông qua lớp Customer frmCustomer Customer CustomerDB Lập trình với CSDL - Kiến trúc kết nối & buộc liệu MMABookDB 41 Demo viết mã cho lớp Customer public class Customer { public Customer() { } public int CustomerID { get; set; } public string Name { get; set; } public string Address { get; set; } public string City { get; set; } public string State { get; set; } public string ZipCode { get; set; } } Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 42 Demo viết mã cho lớp MMABooksDB public static class MMABooksDB { public static SqlConnection GetConnection() { string connectionString = "chuỗi kết nối"; SqlConnection connection = new SqlConnection(connectionString); connection.Open(); return connection; } } Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 43 Demo viết phương thức GetCustomer lớp CustomerDB public static Customer GetCustomer(int customerID) { SqlConnection connection = MMABooksDB.GetConnection(); string selectStatement = "SELECT CustomerID, Name, Address, City, State, ZipCode " + "FROM Customers " + "WHERE CustomerID = @CustomerID"; SqlCommand selectCommand = new SqlCommand(selectStatement, connection); selectCommand.Parameters.AddWithValue("@CustomerID", customerID); connection.Open(); SqlDataReader custReader = selectCommand.ExecuteReader(CommandBehavior.SingleRow); Customer customer = new Customer(); customer.CustomerID = Convert.ToInt32(custReader["CustomerID"].ToString()); customer.Name = custReader["Name"].ToString(); … connection.Close(); return customer; } Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 44 Xử lý kiện cho Button GetCustomer form private void btnGetCustomer_Click(object sender, EventArgs e) { if (Validator.IsPresent(txtCustomerID) && Validator.IsInt32(txtCustomerID)) { int customerID = Convert.ToInt32(txtCustomerID.Text); this.GetCustomer(customerID); if (customer == null) { MessageBox.Show("No customer found with this ID " + "Please try again.", "Customer Not Found"); this.ClearControls(); } else this.DisplayCustomer(); } } Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 45 Tổng kết học Các đối tượng SqlConnection, SqlCommand, SqlDataReader thao tác với CSDL SQL server kiến trúc kết nối Trong SqlConnection kết nối với CSDL; SqlCommand lấy, thêm, sửa, xóa liệu SqlDataReader đọc liệu Điều khiển buộc điều khiển liên kết với liệu CSDL Thuộc tính DataSource điều khiển buộc nguồn liệu cho điều khiển (thường bảng dataset) Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 46 Tổng kết học BindingSource cầu nối CSDL điều khiển form BindingSource chứa nguồn liệu liên kết với điều khiển BindingSource cung cấp nhiều phương thức vào thuộc tính để điều hướng lọc liệu dễ dàng Để dễ dàng phát triển ứng dụng bảo trì, ứng dụng kết nối với CSDL tổ chức thành mơ hình tầng Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 47 ... CSDL - Kiến trúc kết nối & buộc liệu THAO TÁC VỚI DỮ LIỆU BẰNG KIẾN TRÚC KẾT NỐI Lập trình với CSDL - Kiến trúc kết nối & buộc liệu Kiến trúc kết nối Kiến trúc kết nối Ứng dụng kết nối với CSDL. .. ComboBox Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 28 FILE CONFIG Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 29 File app.config Mỗi lần kết nối lại phải gõ vào chuỗi kết nối  Khi... cho biết kết thúc data reader hay chưa 19 Lập trình với CSDL - Kiến trúc kết nối & buộc liệu Thứ tự làm việc với SqlDataReader Lập trình với CSDL - Kiến trúc kết nối & buộc liệu 20 Đưa liệu từ

Ngày đăng: 23/05/2014, 20:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan