1. Trang chủ
  2. » Khoa Học Tự Nhiên

Tuan 3 4 5 lap trinh ket noi database c

24 38 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 1,62 MB

Nội dung

database kết nối database kết nối database kết nối database kết nối database kết nối database kết nối database kết nối database kết nối database kết nối database kết nối database kết nối database kết nốidatabase kết nốidatabase kết nốidatabase kết nốidatabase kết nốidatabase kết nốidatabase kết nốivdatabase kết nốidatabase kết nốidatabase kết nốivvdatabase kết nốidatabase kết nốivdatabase kết nốidatabase kết nốidatabase kết nốivdatabase kết nối

Tài liệu thực hành Môn: Phát triển ứng dụng CSDL THỰC HÀNH TUẦN #3-4-5 KẾT NỐI CSDL SỬ DỤNG STORE PROCEDURE + ADO.NET GV: Hồ Thị Hoàng Vy Lê Nguyễn Hoài Nam Hoàng Anh Tú Nguyễn Trường Sơn Phạm Xuân Quang - Bộ môn hệ thống thông tin – Khoa CNTT – ĐH KHTN [Tên chủ đề] CTT102 – Cơ sở liệu MỤC LỤC Mục tiêu tóm tắt nội dung .1 Hướng dẫn cụ thể 2.1 Kiến trúc ADO.Net 2.2 DataSet 2.2.1 Các thuộc tính DataSet 2.2.2 Các phương thức DataSet 2.3 2.3.1 Lớp đối tượng SqlConnection 2.3.2 Lớp đối tượng SqlCommand .7 2.3.3 Lớp đối tượng SqlParameter 10 2.3.4 Lớp đối tượng SqlDataAdapter 11 2.4 SQL Server Data Provider .4 Bài tập lớp 16 Bài tập nhà 22 Mục tiêu tóm tắt nội dung Sau hồn thành tập sinh viên có thể: - Xây dựng ứng dụng (C#) window form kết nối CSDL với chức Hướng dẫn cụ thể 2.1 Kiến trúc ADO.Net NET Data Provider SQL Server Oracle ADO.NET OLE DB OLE DB Relational Data Applicati on ODBC ODBC Non-Relational Data ADO.NET phần NET Framework, xem “bộ thư viện lớp” chịu trách nhiệm xử lý liệu ngôn ngữ MS.NET ADO.NET thiết kế với dạng liệu “ngắt kết nối”, nghĩa lấy cấu trúc phức tạp liệu từ database, sau ngắt kết nối với database thực thao tác cần thiết Đây tiến mặt thiết kế thiết kế ADO trước ln cần trì kết nối q trình thao tác liệu Có thể coi ADO.NET hệ ADO ADO.NET kế thừa tất ưu điểm ADO, đồng thời với ý tưởng thiết kế hồn tồn ADO.NET Bộ mơn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang có diện mạo khác hẳn so với tiền thân Một vài đặc điểm bật ADO.NET mà ADO khơng có sau: ADO.NET thiết kế hoàn toàn dựa vào XML XML chuẩn trao đổi liệu tiến tốt môi trường Internet ADO.NET thiết kế hoàn toàn hướng đối tượng : đặc điểm chi phối toàn sản phẩm Microsoft NET 2.2 DataSet Là thành phần cho đặc trưng kết nối không liên tục (ngắt kết nối) kiến trúc ADO.NET DataSet thiết kế để thích ứng với nguồn liệu Nhiệm vụ DataSet nhận liệu từ DataAdapter xử lý Lưu trữ liệu DataBase nhớ Mọi thao tác thay đổi liệu thực DataSet, không làm ảnh hưởng đến DataBase Theo vết thay đổi liệu cập nhật liệu ngược vào DataBase thông qua SqlDataAdapter Gồm đối tượng : DataTable, DataRelationship, Constraint Việc sử dụng DataSet tiến lớn kiến trúc ADO.NET nhiên với ứng dụng Web việc sử dụng DataSet khơng khuyến khích đối tượng DataSet xem q lớn, nặng nề khó thích hợp cho đường truyền web vốn hạn chế 2.2.1 Các thuộc tính DataSet STT Tên Thuộc Tính Ý Nghĩa DataSetName Tên dataset Relations Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang Tables 2.2.2 Các phương thức DataSet STT Tên Phương Thức GetChange RejectChanges AcceptChanges GetXML ReadXML WriteXML Ý Nghĩa Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 2.3 SQL Server Data Provider Các lớp SQL Server Data Provider Tên Lớp Ý Nghĩa SqlCommand Thực thi SQL queries, câu lệnh lưu trữ thủ tục SqlConnection Tạo kết nối tới SQL Server SqlDataAdapter Cầu nối trung gian dataset data source SqlReader Cung cấp data stream tới kết SqlError Lưu trữ thông tin lỗi cảnh cáo (warning) SqlException Các ngoại lệ trường hợp SQL Server lỗi cảnh báo SqlParameter Tham sô biên command SqlTransaction Transaction SQL Server 2.3.1 Lớp đối tượng SqlConnection Dùng để tạo kết nối đến CSDL Sql Server 2.3.1.1 Các thuộc tính SqlConnection STT Tên Thuộc Tính Ý Nghĩa ConnectionString Chuỗi kết nối database ConnectionTimeout Thời gian chờ trước ngắt kết nối với database Container Icontainer chứa Component Database Tên database sau kết nối Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang DataSource Tên server, tên file chứa liệu Provider Tên OLEDB provider ServerVersion Version server Site Isite Component State Trạng thái liên kết 2.3.1.2 Các phương thức SqlConnection STT Tên Phương Thức Ỳ Nghĩa SqlConnection Phương thức khởi tạo Open Mở kết nối tới database Close Đóng kết nối với database Dispose Hủy đối tượng BeginTransaction Bắt đầu transaction Commit Kết thúc transaction Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang Cách tạo kết nối: Cách 1: - Tạo chuỗi kết nối Tạo đối tượng kết nối SqlConnection, truyền tham số chuỗi kết nối vào Ví dụ: Cách 2: - Tạo chuỗi kết nối Tạo đối tượng kết nối SqlConnection, khơng truyền tham số Trỏ thuộc tính ConnectionString đối tượng SqlConnection đến chuỗi kết nối Ví dụ: Các tham số SqlConnection Tham số Mô tả Data Source Tên máy IP Initial Catalog Tên Database Integrated Security Sử dụng SSPI User ID Tên User kết nối Password Mật kết nối Lưu ý: Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang o Windows Authenticate: có nghĩa sử dụng quyền hạn Windows Account để truy cập SQl Server Khi kết nối mode này, khơng cần truyền userID, password o Để kết nối Window Authencation, chuỗi kết nối cho thêm thuộc tính: "Integrated Security=true" là: "Integrated Security=SSPI" o Ví dụ: Data Source=localhost;Initial Catalog=myDB;Integrated Security=SSPI; o Sql server account: truyền thông tin account (username, password) vào chuỗi kết nối o Ví dụ: string CnStr = "Server=.;Database=TestDB;UID=sa;PWD=sa"; 2.3.2 Lớp đối tượng SqlCommand Đối tượng thực câu lệnh tương tác truy vấn, rút trích liệu từ database thiết lập kết nối tới liệu trả kết Kết trả lưu trữ dạng luồng thông qua đối tượng :  DataReader  DataSet thông qua đối tượng SqlDataAdapter Ví dụ 1: String sql = “Select * from SinhVien” SqlCommand cmd = new SqlCommand(); Cmd.CommandText = sql; Ví dụ 2: Bộ mơn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang String sql = “Select * from SinhVien” SqlCommand cmd = new SqlCommand(sql); Ví dụ 3: String CnStr = “Server=.;Database=”SinhVienDB”;uid=sa;pwd=sa;”; SqlConnection cn = new SqlConnection(CnStr); String sql = “Select * from SinhVien” SqlCommand cmd = new SqlCommand(sql,cn); Ví dụ 4: String CnStr = “Server=.;Database=”SinhVienDB”;uid=sa;pwd=sa;”; SqlConnection cn = new SqlConnection(CnStr); String sql = “Select * from SinhVien” SqlCommand cmd = new SqlCommand(sql,cn,null); Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 2.3.2.1 Các thuộc tính SqlCommand STT Tên Thuộc Tính Ý Nghĩa CommandText Câu lệnh SQL hay stored procedure kết nối data source CommandTimeout Thời gian chờ trước ngắt kết nối CommandType Giá trị mô tả hoạt động CommandText Connection Thiết lập SqlConnection Container IContainer chứa Component DesignTimeVisible Giá trị mô tả đối tượng command xuất Designer Parameters Lấy tham số Site ISite Component Transaction SqlTransaction SqlCommand thực thi 10 UpdatedRowSource Update DataRow 2.3.2.2 Các phương thức SqlCommand STT Tên Phương Thức Ỳ Nghĩa SqlCommand Phương thức khởi tạo ExecuteReader Gửi CommandText đến Kết nối để tạo SqlDataReader ExecuteNonQuery Trả số lượng dòng bị ảnh hưởng CSDL ExecuteScalar Trả giá trị (VD: giá trị tính tổng) ExecuteXMLReader Trả XMLReader Dispose Hủy đối tượng Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 2.3.3 Lớp đối tượng SqlParameter Cần thực câu lệnh nhiều lần với giá trị khác Đối tượng tham số truyền vào cho đối tượng SqlCommand Có thuộc tính sau : STT Tên Thuộc Tính Ý Nghĩa ParameterName Tên tham số SqlDbType Kiểu liệu tham số tương ứng với kiểu liệu SqlServer Direction Input, Output, InputOutput, ReturnValue, … Size Kích thước tối đa liệu Value Giá trị tham số (input / Output) Để truyền tham số cho command:  Khai báo đối tượng command với tham số: SqlCommand cmd = new SqlCommand ( "select * from Sach where SachID = @SachID ", conn);  Định nghĩa tham số dùng đối tượng command: SqlParameter param = new SqlParameter(); param.ParameterName = "@SachID "; param.Value = sachID;  Thêm tham số vào đối tượng command: cmd.Parameters.Add(param); Ví dụ: truyền nhiều tham số Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 10 2.3.4 Lớp đối tượng SqlDataAdapter Đây đối tượng quan trọng ADO.NET, cầu nối trung gian database dataset (dataset đối tượng ngắt kết nối), đối tượng “ngắt kết nối” dataset liên lạc trực tiếp với database nên cần đối tượng trung gian lấy liệu từ database cho Cung cấp phương thức thuộc tính để lấy lưu liệu DataSet CSDL Sử dụng DataSet để lưu trữ liệu, đồng thời, cho cập nhật liệu ngược lại vào Database Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 11 Các phương thức : STT Tên Phương Thức Ý Nghĩa Fill Lấy liệu từ data source Update Cập nhật liệu vào data source Sử dụng Stored Procedure để truy xuất liệu:  Trước dùng Query Analyzer đặt tên save nhóm câu lệnh SQL vào file dạng script để sử dụng trở lại sau Tuy nhiên thay save vào text file ta save vào SQL Server dạng Stored Procedure  Stored Procedure nhóm câu lệnh Transact-SQL compiled (biên dịch) chứa SQL Server tên xử lý đơn vị (chứ nhiều câu SQL riêng lẻ) Cách dùng:  Tạo stored procedure sqlServer  Tạo Sqlcommand với giá trị command text tên Stored procedure  SqlCommand cmd = new SqlCommand(“Ten stored”,cn) Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 12  Gán commandType:  cmd.CommandType = CommandType.StoredProcedure  Truyền tham số vào command StoredProcedure có u cầu  Thực thi command Ví dụ 1: Ví dụ 2: Bộ mơn Hệ thống thơng tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 13 Ví dụ 3: Bộ mơn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 14 Gọi stored procedure có truyền tham số: Ví dụ 4: Bộ mơn Hệ thống thơng tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 15 2.4 Bài tập lớp Chuẩn bị csdl sau: drop proc sp_InsertHocSinh go create proc sp_InsertHocSinh @TenHS nvarchar(255), @DiaChi nvarchar(255), @DienThoai varchar(11), @NgaySinh datetime, @MaLop int, @MaHS int output as begin Insert into HocSinh(TenHS,DiaChi,DienThoai,NgaySinh,MaLop) Values(@TenHS,@DiaChi,@DienThoai,@NgaySinh,@MaLop) Select @MaHS = @@Identity end GO drop proc sp_DeleteHocSinh Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 16 GO create proc sp_DeleteHocSinh @MaHS int as begin Delete From HocSinh where MaHS=@MaHS end GO drop proc sp_UpdateHocSinh go create proc sp_UpdateHocSinh @MaHS int, @TenHS nvarchar(255), @DiaChi nvarchar(255), @DienThoai varchar(11), @NgaySinh datetime, @MaLop int as begin Update HocSinh set TenHS=@TenHS,DiaChi=@DiaChi,DienThoai=@DienThoai,NgaySinh=@NgaySinh ,MaLop=@MaLop where MaHS=@MaHS end GO Thiết kế giao diện: Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 17 Code behind: public partial class frmMain : Form { const string cnStr = "Server=.; Database=QLSV; Integrated Security=SSPI;"; DataTable dt = new DataTable(); public frmMain() { InitializeComponent(); } private void frmMain_Load(object sender, EventArgs e) { SqlConnection cn = new SqlConnection(cnStr); SqlDataAdapter da = new SqlDataAdapter("select * from Lop", cn); DataTable dtLop = new DataTable(); da.Fill(dtLop); colMaLop.DataSource = dtLop; colMaLop.DisplayMember = "TenLop"; colMaLop.ValueMember = "MaLop"; Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 18 cboLop.DataSource = dtLop; cboLop.DisplayMember = "TenLop"; cboLop.ValueMember = "MaLop"; da = new SqlDataAdapter("select * from Diem", cn); DataTable dtDiem = new DataTable(); da.Fill(dtDiem); colID.DataSource = dtDiem; colID.DisplayMember = "DiemThi"; colID.ValueMember = "id"; //da = new SqlDataAdapter("select * from HocSinh", cn); da.SelectCommand.CommandText = "select * from HocSinh"; da.Fill(dt); grd.DataSource = dt; } private void tsbEdit_Click(object sender, EventArgs e) { ButtonStatus(false); } private void ButtonStatus(bool status) { tsbEdit.Enabled = status; tsbSave.Enabled = tsbCancel.Enabled = !status; grd.AllowUserToAddRows = !status; grd.ReadOnly = status; grd.AllowUserToDeleteRows = !status; } private void tsbSave_Click(object sender, EventArgs e) { SqlConnection cn = new SqlConnection(cnStr); cn.Open(); foreach (DataRow row in dt.Rows) Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 19 { switch (row.RowState) { case DataRowState.Added: InsertHocSinh(row, cn); break; case DataRowState.Modified: UpdateHocSinh(row, cn); break; case DataRowState.Deleted: DeleteHocSinh(row, cn); break; default: break; } } cn.Close(); dt.AcceptChanges(); ButtonStatus(true); } private void InsertHocSinh(DataRow row, SqlConnection cn) { string TenHS = row["TenHS"].ToString(); string DiaChi = row["DiaChi"].ToString(); string DienThoai = row["DienThoai"].ToString(); DateTime NgaySinh = Convert.ToDateTime(row["NgaySinh"]); int MaLop = Convert.ToInt32(row["MaLop"]); string procName = "sp_InsertHocSinh"; SqlCommand cmd = new SqlCommand(procName, cn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@TenHS", SqlDbType.NVarChar); cmd.Parameters.Add("@DiaChi", SqlDbType.NVarChar); cmd.Parameters.Add("@DienThoai", SqlDbType.VarChar); cmd.Parameters.Add("@NgaySinh", SqlDbType.DateTime); cmd.Parameters.Add("@MaLop", SqlDbType.Int); cmd.Parameters.Add("@MaHS", SqlDbType.Int).Direction = ParameterDirection.Output; cmd.Parameters["@TenHS"].Value = TenHS; cmd.Parameters["@DiaChi"].Value = DiaChi; Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 20 cmd.Parameters["@DienThoai"].Value = DienThoai; cmd.Parameters["@NgaySinh"].Value = NgaySinh; cmd.Parameters["@MaLop"].Value = MaLop; cmd.ExecuteNonQuery(); int MaHS Convert.ToInt32(cmd.Parameters["@MaHS"].Value); row["MaHS"] = MaHS; } = private void DeleteHocSinh(DataRow row, SqlConnection cn) { int MaHS = Convert.ToInt32(row["MaHS", DataRowVersion.Original]);//dong da xoa roi ko nua, phai lay lai phien ban cu~ string procName = "sp_DeleteHocSinh"; SqlCommand cmd = new SqlCommand(procName, cn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@MaHS", SqlDbType.Int); cmd.Parameters["@MaHS"].Value = MaHS; cmd.ExecuteNonQuery(); } private void UpdateHocSinh(DataRow row,SqlConnection cn) { int MaHS = Convert.ToInt32(row["MaHS"]); string TenHS = row["TenHS"].ToString(); string DiaChi = row["DiaChi"].ToString(); string DienThoai = row["DienThoai"].ToString(); DateTime NgaySinh = Convert.ToDateTime(row["NgaySinh"]); int MaLop = Convert.ToInt32(row["MaLop"]); string procName = "sp_UpdateHocSinh"; SqlCommand cmd = new SqlCommand(procName, cn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@MaHS", SqlDbType.Int); cmd.Parameters.Add("@TenHS", SqlDbType.NVarChar); cmd.Parameters.Add("@DiaChi", SqlDbType.NVarChar); cmd.Parameters.Add("@DienThoai", SqlDbType.VarChar); Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 21 cmd.Parameters.Add("@NgaySinh", SqlDbType.DateTime); cmd.Parameters.Add("@MaLop", SqlDbType.Int); cmd.Parameters["@MaHS"].Value = MaHS; cmd.Parameters["@TenHS"].Value = TenHS; cmd.Parameters["@DiaChi"].Value = DiaChi; cmd.Parameters["@DienThoai"].Value = DienThoai; cmd.Parameters["@NgaySinh"].Value = NgaySinh; cmd.Parameters["@MaLop"].Value = MaLop; cmd.ExecuteNonQuery(); } private void tsbCancel_Click(object sender, EventArgs e) { dt.RejectChanges(); ButtonStatus(true); } private void button1_Click(object sender, EventArgs e) { //int i (int)grd.SelectedRows[0].Cells["colCheck"].Value; //string s grd.SelectedRows[0].Cells["colCheck"].Value.ToString(); MessageBox.Show("aaa"); = = } Bài tập nhà Sinh viên tự xây dựng lại ứng dụng QLSV với chức hướng dẫn, suy nghĩ phát triển số chức khác cho ứng dụng HẾT Bộ môn Hệ thống thông tin | Khoa CNTT | ĐH KHTN TP HCM | 1/2013 Trang 22 ... TP HCM | 1/20 13 Trang 15 2 .4 Bài tập lớp Chuẩn bị csdl sau: drop proc sp_InsertHocSinh go create proc sp_InsertHocSinh @TenHS nvarchar( 255 ), @DiaChi nvarchar( 255 ), @DienThoai varchar(11), @NgaySinh... SqlTransaction Transaction SQL Server 2 .3. 1 Lớp đối tượng SqlConnection Dùng để tạo kết nối đến CSDL Sql Server 2 .3. 1.1 C c thu c tính SqlConnection STT Tên Thu c Tính Ý Nghĩa ConnectionString Chuỗi... procedure kết nối data source CommandTimeout Thời gian chờ trư c ngắt kết nối CommandType Giá trị mô tả hoạt động CommandText Connection Thiết lập SqlConnection Container IContainer chứa Component

Ngày đăng: 11/05/2020, 13:43

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w