intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Lập trình cơ sở dữ liệu

Chia sẻ: Bui Duc | Ngày: | Loại File: DOC | Số trang:18

232
lượt xem
85
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Đối tượng Sqlconnection Không gian tên sử dụng là : System.Data.SqlClient ; 1. Kết nối theo đặc quyền hệ điều hành Cú pháp 1 : Server = servername [ \InstanceName ]; Database =

Chủ đề:
Lưu

Nội dung Text: Lập trình cơ sở dữ liệu

  1. Lập trình cơ sở dữ liệu I. Đối tượng Sqlconnection Không gian tên sử dụng là : System.Data.SqlClient ; 1. Kết nối theo đặc quyền hệ điều hành Cú pháp 1 : Server = servername [ \InstanceName ]; Database = databasename; Integrated Security = SSPI; Cú pháp 1 : Server = servername[ \InstanceName ]; Database = databasename; Integrated Security = true; Cú pháp 3 : Server = servername [ \InstanceName ]; Initial Catolog = databasename; Integrated Security = true; • Chú ý : Tài khoản đăng nhập phải được khai báo trong phần Login 2. Kết nối theo đặc quyền SQL Server Cú pháp 1 (Chung) : Server = Servername[ \InstanceName ]; Database = Databasename; Use ID = Username; Password = YourPasword; [Connection Timeout = second;] [port = portno;] [Persist Security Info = true;] • Chú ý : Servername có thể là : (local) hoặc ( . ) hoặc (Địa chỉ IP) . Cú pháp 2 : Với dạng Attachment và phiên bản SQL Server 2005 (SQLEXPRESS) @”Data Source = (local)\SQLEXPRESS; AttachDbFilename = ; Integrated Security = true; Use Instance = true”; 3. Tập tin lưu chuỗi kết nối Ta có thể sử dụng các định dạng *.ini hoặc *.txt để lư chuỗi kết nối . Tuy nhiên khi làm việc với .Net chúng ta nên sử dụng định dạng *.config đã được hố trợ sẵn. - Cú pháp 1: ?xml version="1.0" encoding="utf-8" ?>
  2.  Cách đọc nội dung chuỗi kết nối theo cú pháp 1 ta sử dụng phương thức connectionStrings của lớp connectionStringSettings thuộc không gian tên System.Configuration; II. Đối tượng SQLCommand 2.1 Khai báo SqlCommand sqlCommand; 2.2 Khởi tạo Có 4 Constructor để khai báo khởi tạo đối tượng này + sqlCommand = new SqlCommand(); + sqlCommand = new SqlCommand(string CommandText); + sqlCommand = new SqlCommand(string CommandText,SqlConnection sqlConnection); + sqlCommand = new SqlCommand(string CommandText,SqlConnection sqlConnection,SqlTrasaction sqlTransaction); 2.3 Các thuộc tính 2.3.1 CommandText Cho phép khai báo một chuỗi phát biểu SQL Server VD : String strSQL = “Select * from TBLSinhvien”; sqlCommand = new SqlCommand(); sqlCommand.CommandText = strSQL; 2.3.2 CommandType Cho phép ta chọn một trong 3 giá trị enum là : Text,TableDirect,StoredProcedure VD: String strSQL = “spDanhsachSV”; sqlCommand = new SqlCommand(); sqlCommand.CommandText = strSQL;am sqlCommand.CommandType = CommandType.StoredProcedure; • Lưu ý khi thủ tục có tham số truyền vào thì ta có thể sử dụng đối tượng SqlParameterCollection hay SqlParameter 2.3.3 CommandTimeout Cho phép khai báo thời gian chờ thực thi phát biểu SQL được tính bằng giây VD : String strSQL = “spDanhsachSV”; sqlCommand = new SqlCommand(); sqlCommand.CommandText = strSQL; sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.CommandTimeout = 30; 2.3.4 Connection Cho phép ta khởi tạo đối tượng sqlConnection mà không cần phải thông qua Constructor VD : String strSQL = “spDanhsachSV”; sqlCommand = new SqlCommand();
  3. sqlCommand.CommandText = strSQL; sqlCommand.Connection = sqlConnection; sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.CommandTimeout = 30; 2.4 Phương thức 2.4.1 Phương thức ExecuteNonQuery Thực thi các phát biểu SQL, thử tục nội tại, và nó trả về số bản ghi đựoc thực thi VD : sqlCommand.Connection = sqlConnection; sqlConnnection.Open(); String strSQL = “delete from TBLSinhvien where Masv = ‘SV0000001’”; sqlCommand = new SqlCommand(); sqlCommand.CommandText = strSQL; int records = sqlCommand.ExcuteNonQuery(); sqlConnection.Close(); sqlConnection.Dispose();  Thực hiện thêm , sửa , xoá một bản ghi : using System; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Windows.Forms; namespace DoituongSQLCommand { public partial class Form1 : Form { // Khai bao doi tuong sqlConnection SqlConnection sqlConnection = new SqlConnection(); string connectionString = @"server =QUYETNV87\SQLEXPRESS ;" + "database = Sinhvien ;" + "Integrated Security = True;"; public Form1() { InitializeComponent(); } private void btnSQLinsert_Click(object sender, EventArgs e) { try { sqlConnection.ConnectionString = connectionString; sqlConnection.Open(); String strSQL = "insert into TBLSinhvien(MaSV,Hoten,Gioitinh,Ngaysinh,Malop,M atinh) values('SV0000011','Trần Quốc Huy','Nam','07/19/1986','1900052','T09')"; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.CommandText = strSQL; sqlCommand.Connection = sqlConnection; int i = sqlCommand.ExecuteNonQuery(); // Đóng kết nối sqlConnection.Close(); // Giải phóng kêt nối cơ sở dữ liệu
  4. sqlConnection.Dispose(); MessageBox.Show("Đã thêm " + i.ToString() + " bản ghi"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void Form1_Load(object sender, EventArgs e) { } private void btnSQLupdate_Click(object sender, EventArgs e) { try { sqlConnection.ConnectionString = connectionString; sqlConnection.Open(); String strSQL = "Update TBLSinhvien set Matinh ='T15' where Matinh='T05'"; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.CommandText = strSQL; sqlCommand.Connection = sqlConnection; int i = sqlCommand.ExecuteNonQuery(); // Đóng kết nối sqlConnection.Close(); // Giải phóng kêt nối cơ sở dữ liệu sqlConnection.Dispose(); MessageBox.Show("Đã cập nhật " + i.ToString() + " bản ghi"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnSQLdelete_Click(object sender, EventArgs e) { try { sqlConnection.ConnectionString = connectionString; sqlConnection.Open(); String strSQL = "Delete TBLSinhvien where MaSV='SV0000011'"; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.CommandText = strSQL; sqlCommand.Connection = sqlConnection; sqlCommand.CommandTimeout = 60; int i = sqlCommand.ExecuteNonQuery(); // Đóng kết nối sqlConnection.Close(); // Giải phóng kêt nối cơ sở dữ liệu sqlConnection.Dispose(); MessageBox.Show(i.ToString() + " bản ghi đã được xoá "); } catch (Exception ex)
  5. { MessageBox.Show(ex.Message); } } private void btnInsertAttach_Click(object sender,EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); string connectionString = @"server=(local)\SQLEXPRESS ;" + @"AttachDbFilename =E:\LAPTRINH\Database\Sinhvien.mdf;" + @"Integrated Security = True;" + @"User Instance= true;"; sqlConnection.ConnectionString = connectionString; try { sqlConnection.Open(); String strSQL = "insert into TBLSinhvien(MaSV,Hoten,Gioitinh,Ngaysinh,Malop,M atinh) values('SV0000011','Trần Quốc Huy','Nam','07/19/1986','1900052','T09')"; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.CommandText = strSQL; sqlCommand.Connection = sqlConnection; int i= sqlCommand.ExecuteNonQuery(); // Đóng kết nối sqlConnection.Close(); // Giải phóng kêt nối cơ sở dữ liệu sqlConnection.Dispose(); MessageBox.Show(""); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } 2.4.2 Phương thức ExecuteScalar Phương thức này thực thi phát biểu SQL Server giá trị trả về là kiểu đối tượng (object) Nó thường được dùng để lấy giá trị của tổng các mấu tin hay giá trị của cột hay hàng thứ nhất  Ví dụ : using System; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Windows.Forms; namespace ExecuteScalar { public partial class Form1 : Form { public Form1() { InitializeComponent();
  6. } private void btnSelectCount_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(); string connectionString = @"server = (local)\SQLEXPRESS ;" + "database = Sinhvien;" + "Integrated Security = true;"; conn.ConnectionString = connectionString; try { conn.Open(); String strSQL = "Select count(*) from TBLSinhvien"; SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = strSQL; object obj = cmd.ExecuteScalar(); MessageBox.Show("Số bản ghi trong bảng TBLSinhvien là " + Convert.ToString(obj)); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnGiatricot_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(); string connectionString = @"server = (local)\SQLEXPRESS ;" + "database = Sinhvien;" + "Integrated Security = true;"; conn.ConnectionString = connectionString; try { conn.Open(); String strSQL = "Select [Hoten] from TBLSinhvien"; SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = strSQL; object obj = cmd.ExecuteScalar(); MessageBox.Show("Họ tên của SV đầu tiên bảng TBLSinhvien là " + Convert.ToString(obj)); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } • Kết quả :
  7. 2.4.3 Phương thức ExecuteReader Khác với hai phương thức trên , phương thức này trả về tập các giá trị chỉ đọc một chiều và dùng đối tượng sqlDataReader để nắm dữ tập dữ liệu đó.  Ví dụ : Ta lấy ra 2 cột là mã sinh viên và Họ tên trong bảng TBLSinhvien using System; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExecuteReader { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnGetData_Click(object sender, EventArgs e)
  8. { SqlConnection conn = new SqlConnection(); string connectionString = @"server = (local)\SQLEXPRESS ;" + "database = Sinhvien;" + "Integrated Security = true;"; conn.ConnectionString = connectionString; try { // Mở kết nối cơ sở dữ liệu conn.Open(); // Khai báo và khởi tạo đối tượng SqlCommand SqlCommand cmd = new SqlCommand("Select * from TBLSinhvien", conn); //Khai báo đối tượng SqlDataReader SqlDataReader dr = cmd.ExecuteReader(); string str = "Mã sinh viên - Họ tên\r\n\n"; //Đọc từng bản ghi while (dr.Read()) { str += dr.GetString(0) + " - " + dr.GetString(1) + "\r\n"; } // Đóng và giải phóng đôi tưọng SqlDataReader dr.Close(); dr.Dispose(); MessageBox.Show(str); //Đóng và giải phóng kết nối cơ sở dữ liệu conn.Close(); conn.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } • K ết qu ả :
  9. 2.4.4 Phương thức ExcuteXmlReader Phương thức này tương tự như phương thức ExecuteReader nhưng nó trả về tập dữ liệu có định dạng XML và sử dụng đối tượng XMLReader để nắm dữ tập dữ liệu đó.  Ví dụ : Đọc bản ghi đầu tiên trong bảng TBLSinhvien theo định dạng XML using System; using System.Collections.Generic; using System.ComponentModel; using System.Xml; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExecuteXmlReader { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnXmlReader_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(); string connectionString = @"server =(local)\SQLEXPRESS ;" + "database = Sinhvien;" + "Integrated Security = true;"; conn.ConnectionString = connectionString; try { // Mở kết nối cơ sở dữ liệu conn.Open(); // Khai báo và khởi tạo đối tượng SqlCommand SqlCommand cmd = new SqlCommand("Select top 1 * from TBLSinhvien for xml auto", conn);
  10. //Khai báo đối tượng XmlReader XmlReader xmlrd = cmd.ExecuteXmlReader(); XmlDocument doc = new XmlDocument(); doc.Load(xmlrd); string str = ""; //Đọc từng bản ghi foreach (XmlNode xmlNode in doc.ChildNodes) { str += xmlNode.OuterXml +"\n"; } xmlrd.Close(); MessageBox.Show(str); //Đóng và giải phóng kết nối cơ sở dữ liệu conn.Close(); conn.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } • Kết quả : 2.5 Xây dựng lớp dùng chung cho SQLServer Khi chúng ta muốn sử dụng các phương thức trên chung trong cơ sở dữ liệu SQL Server ,để có thể truyền vào tham số thì chúng ta sẽ xây dụng lớp dùng chung , giả sử là Database và kêt hợp với đôí tượng SqlConnection ở phần trên . Ta xét ví dụ sau  Ví dụ :
  11. using System; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Windows.Forms; namespace Lopdungchung { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Connection cn = new Connection(); } private void btnENQ_Click(object sender, EventArgs e) { Database sql = new Database(); try { int r = sql.ExecuteNonQuery("Update TBLSinhvien set Matinh='T02' where Masv = 'SV0000010'", CommandType.Text); MessageBox.Show("Đã có " + r.ToString() + " bản ghi đã được sửa"); } catch (Exception ex) { MessageBox.Show(ex.Message + sql.StrError); } } private void btnESL_Click(object sender, EventArgs e) { Database sql = new Database(); try { object obj = sql.ExecuteScalar("Select count(*) from TBLSinhvien", CommandType.Text); MessageBox.Show("Có " + Convert.ToString(obj) + " bản ghi trong bảng TBLSinhvien"); } catch (Exception ex) { MessageBox.Show(ex.Message + sql.StrError); } } private void btnER_Click(object sender, EventArgs e) { Database sql = new Database(); try { object[] obj = sql.ExcuteReader("Select * from TBLSinhvien where MaSV = 'SV0000004'",
  12. CommandType.Text); MessageBox.Show("Thông tin về SV có mà SV0000004 : " + Convert.ToString(obj[1]) + " - " + Convert.ToString(obj[2])); } catch (Exception ex) { MessageBox.Show(ex.Message + sql.StrError); } } } public class Connection { public static SqlConnection conn; static Connection() { conn = new SqlConnection(); conn.ConnectionString = @"server = QUYETNV87\SQLEXPRESS ;" + "database = Sinhvien ;" + "Integrated Security = True ;"; try { conn.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } public class Database { private string strError = ""; public string StrError { get { return strError; } } public int ExecuteNonQuery(String strSQL, CommandType cmdType) { int recordNumbers = 0; // Khai báo và khởi tạo đối tượng SqlCommand SqlCommand cmd = new SqlCommand(); cmd.CommandText = strSQL; cmd.CommandType = cmdType; cmd.Connection = Connection.conn; try { recordNumbers = cmd.ExecuteNonQuery(); } catch (Exception ex) { strError = "Error : " + ex.Message; } return recordNumbers; } public object ExecuteScalar(String strSQL, CommandType
  13. cmdType) { object objValues = null; // Khai báo và khởi tạo đối tượng SqlCommand SqlCommand cmd = new SqlCommand(); cmd.CommandText = strSQL; cmd.CommandType = cmdType; cmd.Connection = Connection.conn; try { objValues = cmd.ExecuteScalar(); } catch (Exception ex) { strError = "Error : " + ex.Message; } return objValues; } public object[] ExcuteReader(String strSQL, CommandType cmdType) { object[] info = null; try { SqlCommand cmd = new SqlCommand(); cmd.CommandText = strSQL; cmd.Connection = Connection.conn; SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { info = new object[dr.FieldCount]; //Lấy ra mảng đối tượng bằng phương thức GetValues dr.GetValues(info); } dr.Close(); dr.Dispose(); } catch (Exception ex) { strError = "Error : " + ex.Message; } return info; } } } • Kết quả :
  14. III. Đối tượng SqlParameter và Parameters Collection  Ví dụ : using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Windows.Forms; namespace DoituongSqlParameter {
  15. public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnText_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(); conn.ConnectionString = @"server = (local)\SQLEXPRESS;" + "database = Sinhvien;" + "Integrated Security = true;"; try { conn.Open(); // Khai báo và khởi tạo đối tượng SqlCommand SqlCommand cmd = new SqlCommand(); cmd.CommandText = "insert into TBLSinhvien(Masv,Hoten,Gioitinh,Ngaysinh, Matinh,Malop,Chucvu,Email,Dienthoai)" + "values(@Masv,@Hoten,@Gioitinh,@Ngaysinh, @Matinh,@Malop,@Chucvu,@Email,@Dienthoai)" ; // Khai báo và khởi tạo đối tượng SqlParameter SqlParameter prm = new SqlParameter(); // Khai báo các thuộc tính ứng với tên tham số // Tham số Masv prm.ParameterName = "@Masv"; prm.SqlValue = "SV0000015"; prm.SqlDbType = SqlDbType.NChar; prm.Size = 10; // Thêm dữ liệu SqlParameter vào đối tượng //SqlCommand cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng Sqlparameter // với hai tham số prm = new SqlParameter("@Hoten", "Vũ Thị Thảo"); prm.SqlDbType = SqlDbType.NVarChar; prm.Size = 50; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Gioitinh", SqlDbType.NChar, 3); prm.SqlValue = "Nữ"; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // ứng với ts Ngaysinh prm = new SqlParameter("@Ngaysinh", SqlDbType.DateTime); prm.SqlValue = "11/10/1987"; cmd.Parameters.Add(prm);
  16. // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Matinh", SqlDbType.NChar, 3); prm.SqlValue = "T17"; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Malop", SqlDbType.NChar, 10); prm.SqlValue = "1900052"; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Chucvu", SqlDbType.NVarChar, 20); prm.SqlValue = ""; cmd.Parameters.Add(prm); prm = new SqlParameter("@Email", SqlDbType.NChar, 30); prm.SqlValue = "thaovt@gmail.com"; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Dienthoai", SqlDbType.NChar, 10); prm.SqlValue = "0975775775"; cmd.Parameters.Add(prm); // Khai báo thuộc tính Connection cmd.Connection = conn; cmd.ExecuteNonQuery(); conn.Close(); conn.Dispose(); MessageBox.Show("Đã chèn thêm bản ghi thành công\nbằng việc sử dụng đối tượng\nSqlParmameter với kiểu Text"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnSP_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(); conn.ConnectionString = @"server = (local)\SQLEXPRESS;" + "database = Sinhvien;" + "Integrated Security = true;"; try { conn.Open(); // Khai báo và khởi tạo đối tượng SqlCommand SqlCommand cmd = new SqlCommand(); cmd.CommandText = "sp_Themsinhvien";
  17. cmd.CommandType = CommandType.StoredProcedure; // Khai báo và khởi tạo đối tượng SqlParameter SqlParameter prm = new SqlParameter(); // Khai báo các thuộc tính ứng với tên tham số // Tham số Masv prm.ParameterName = "@Masv"; prm.SqlValue = "SV0000016"; prm.SqlDbType = SqlDbType.NChar; prm.Size = 10; // Thêm dữ liệu SqlParameter vào đối tượng // SqlCommand cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng Sqlparameter // với hai tham số prm = new SqlParameter("@Hoten", "Nguyễn Xuân Phương"); prm.SqlDbType = SqlDbType.NVarChar; prm.Size = 50; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Gioitinh", SqlDbType.NChar, 10); prm.SqlValue = "Nam"; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // ứng với ts Ngaysinh prm = new SqlParameter("@Ngaysinh", SqlDbType.DateTime); prm.SqlValue = "10/25/1986"; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Matinh", SqlDbType.NChar, 10); prm.SqlValue = "T23"; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Malop", SqlDbType.NChar, 10); prm.SqlValue = "1900052"; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Chucvu", SqlDbType.NChar, 15); prm.SqlValue = ""; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Email", SqlDbType.NChar, 30); prm.SqlValue = "phuongnx@gmail.com"; cmd.Parameters.Add(prm); // Khai báo và khởi tạo đối tượng SqlParameter // với 3 tham số prm = new SqlParameter("@Dienthoai",
  18. SqlDbType.NChar, 10); prm.SqlValue = "0982550808"; cmd.Parameters.Add(prm); // Khai báo thuộc tính Connection cmd.Connection = conn; cmd.ExecuteNonQuery(); conn.Close(); conn.Dispose(); MessageBox.Show("Đã chèn thêm bản ghi thành công\nbằng việc sử dụng đối tượng\nSqlParameter với thủ tục "); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } • Kết quả :
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2