8/29/11

C# và SQL Server 2005

Tên bài viết: C# và SQL Server 2005
Tác giả: Quang.It / IDE
Cấp độ bài viết: Cơ bản
Tóm tắt: Các thao tác cơ bản C# với SQL Server 2005



C# và SQL Server 2005

Hiện nay, ngoài Access, hệ quản trị cơ sở dữ liệu SQL Server được sử dụng rất phổ biến. Bài này sẽ đề cập đến các thao tác cơ bản giữa C# và SQL Server.
Để sử dụng đươc bài hướng dẫn này các bạn hãy tải file Database backup nằm ở trang đầu tiên này và restore nó vào SQL Server của mình.
Database này có tên là SampleTest bên trong có một Table tên là Danhsach..
Bảng này gồm có năm cột
STT : kiểu int
Name, Address, Phone, Email có kiểu là ntext.

1. Namespace cần thiết :
Để có thể thao tác tốt với SQL Server chúng ta nên sử dụng namespace.


using System.Data;
using System.Data.SqlClient;//Namespace dùng cho SQL

2. Kết nối với SQL Server
Để có thể kết nối chúng ta phải tạo ra chuỗi kết nối Connection String cung cấp cho nó đầy đủ các thành phần sau


  1. Server hay Data Source = tên máy chủ\tên thể hiện của máy chủ SQL
  2. Database hay Intial Catalog = Tên của Database mà mình định truy xuất trong SQL.
  3. User id = Tên người sử dụng
  4. Password = Mật mã bảo vệ
  5. Integrated Security=SSPI hay true// bảo mật
  6. Persist Security Info=False // Không trả về thông tin bảo mật
Ví dụ:
  1. String varConnect = @"Data Source=servercomputer\sqlexpress;" +
  2. "database=SampleTest;" +
  3. "User ID =sa;"+
  4. "Password =;" +
  5. "Integrated Security=SSPI;" +
  6. "Persist Security info =false";
Trong đó Servercomputer là tên máy tính của mình, SqlExpress là 1 thể hiện của máy chủ sql. Do đó bạn phải chỉnh sử lại cho phù hợp với máy của mình.
SampleTest là cơ sở dữ liệu mẫu được restore lại trong SQL.
Để tạo kết nối chúng ta dùng lớp SqlConnection.
Code hoàn chỉnh tạo kết nối và hủy kết nối;

  1. SqlConnection objConnect;
  2. #region "Tạo kết nối và hủy kết nối"
  3. /// <summary>
  4. /// Tạo kết nối
  5. /// </summary>
  6. private void subCreateConnect()
  7. {
  8. String varConnect = @"Data Source=servercomputer\sqlexpress;" +
  9. "database=SampleTest;" +
  10. "User ID =sa;"+
  11. "Password =;" +
  12. "Integrated Security=SSPI;" +
  13. "Persist Security info =false";
  14. objConnect = new SqlConnection(varConnect);
  15. objConnect.Open();
  16. }
  17. /// <summary>
  18. /// Hủy kết nối
  19. /// </summary>
  20. private void subDestroyConnect()
  21. {
  22. objConnect.Close();
  23. objConnect.Dispose();
  24. objConnect = null;
  25. }
  26. #endregion
3. Truy xuất dữ liệu trong SQL

3.1 Truy xuất dữ liệu bằng SQL trực tiếp có truyền tham số
Dùng SqlCommand để thực thi câu lệnh SQL.
Ở đây ta sẽ dùng SqlDataReader để đọc dữ liệu với tốc độ nhanh.

  1. private void subSelectBySQLTruyềnthamsố()
  2. {
  3. subCreateConnect();
  4. //Lệnh cần thúc hiện
  5. SqlCommand objCommand = new SqlCommand();
  6. objCommand.Connection = objConnect;
  7. objCommand.CommandText = "Select * from Danhsach where STT>@STT";
  8. objCommand.Parameters.Add("@STT", SqlDbType.Int).Value = 3;
  9. SqlDataReader objReader = objCommand.ExecuteReader();
  10. DataTable objTable = new DataTable();
  11. objTable.Load(objReader);
  12. DGSQL.DataSource = objTable;
  13. //Hủy đối tượng
  14. objCommand.Dispose();
  15. objCommand = null;
  16. objTable.Dispose();
  17. objTable = null;
  18. subDestroyConnect();
  19. }
3.2 Truy xuất dữ liệu thông quan Adapter
Ở đây ta sẽ dùng SqlDataAdapter để thực thi command và dữ liệu lấy về sẽ được điền vào Datatable thông qua Fill.

  1. private void subSelectBySQLAdapter()
  2. {
  3. subCreateConnect();
  4. //Command
  5. SqlCommand objCommand = new SqlCommand();
  6. objCommand.Connection = objConnect;
  7. objCommand.CommandText = "Select * from Danhsach where STT>@STT";
  8. objCommand.Parameters.Add("@STT", SqlDbType.Int).Value = 4;
  9. //SqlAdapter
  10. SqlDataAdapter objAdapter = new SqlDataAdapter();
  11. objAdapter.SelectCommand = objCommand;
  12. DataTable objTable = new DataTable();
  13. objAdapter.Fill(objTable);
  14. DGSQL.DataSource = objTable;
  15. //Hủy đối tượng
  16. objCommand.Dispose();
  17. objCommand = null;
  18. objTable.Dispose();
  19. objTable = null;
  20. objAdapter.Dispose();
  21. objAdapter=null;
  22. subDestroyConnect();
  23. }
4. Binhding DataGridView với Textbox
Có nhiệm vụ khi ta clịck vào dòng nào trong DataGridView thì các dữ liệu trên dòng đó sẽ hiển thị trên Textbox.

  1. private void subDatabinding()
  2. {
  3. txtSTT.DataBindings.Clear();
  4. txtSTT.DataBindings.Add("Text", DGSQL.DataSource, "STT");
  5. txtName.DataBindings.Clear();
  6. txtName.DataBindings.Add("Text", DGSQL.DataSource, "Name");
  7. txtAddress.DataBindings.Clear();
  8. txtAddress.DataBindings.Add("Text", DGSQL.DataSource, "Address");
  9. txtPhone.DataBindings.Clear();
  10. txtPhone.DataBindings.Add("Text", DGSQL.DataSource, "Phone");
  11. txtEmail.DataBindings.Clear();
  12. txtEmail.DataBindings.Add("Text", DGSQL.DataSource, "Phone");
  13. }
5. Insert 1 Record vào trong Table

5.1 Insert dữ liệu vào Table bằng SQL trực tiếp có truyền tham số

  1. private void subInsertDulieucótruyềnthamsố()
  2. {
  3. subCreateConnect();
  4. //Command
  5. SqlCommand objCommand = new SqlCommand();
  6. objCommand.Connection = objConnect;
  7. objCommand.CommandType = CommandType.Text;
  8. objCommand.CommandText = "Insert into Danhsach Values (@STT,@Name,@Address, @Phone, @Email)";
  9. //THam số
  10. objCommand.Parameters.Add("@STT", SqlDbType.Int).Value = Convert.ToInt32(txtSTT.Text);
  11. objCommand.Parameters.Add("@Name", SqlDbType.NText).Value = txtName.Text;
  12. objCommand.Parameters.Add("@Address", SqlDbType.NText).Value = txtAddress.Text;
  13. objCommand.Parameters.Add("@Phone", SqlDbType.NText).Value = txtPhone.Text;
  14. objCommand.Parameters.Add("@Email", SqlDbType.NText).Value = txtEmail.Text;
  15. objCommand.ExecuteNonQuery();
  16. //Hueỷ đối tượng
  17. objCommand.Dispose();
  18. objCommand = null;
  19. subDestroyConnect();
  20. }
Dùng objCommand.ExecuteNonQuery(); để thực thi command.

5.2 Insert dữ liệu vào Table thông qua Adapter
Để Insert được 1 record mới vào trong table thông qua Adapter thì đầu tiên ta phải Insert thêm 1 dòng mới vào trong Table trước.

  1. private void subInsertDữliệuByAdapter()
  2. {
  3. subCreateConnect();
  4. //Command
  5. SqlCommand objCommand = new SqlCommand();
  6. objCommand.Connection = objConnect;
  7. objCommand.CommandText = "Select * from Danhsach where STT>@STT";
  8. objCommand.Parameters.Add("@STT", SqlDbType.Int).Value = 4;
  9. //SqlAdapter
  10. SqlDataAdapter objAdapter = new SqlDataAdapter();
  11. objAdapter.SelectCommand = objCommand;
  12. DataTable objTable = new DataTable();
  13. objAdapter.Fill(objTable);
  14. //Insert 1 dòng mới vào DataTable
  15. DataRow objRow = objTable.NewRow();
  16. objRow["STT"] = Convert.ToInt32(txtSTT.Text);
  17. objRow["Name"] = txtName.Text;
  18. objRow["Address"] = txtAddress.Text;
  19. objRow["Phone"] = txtPhone.Text;
  20. objRow["Email"] = txtEmail.Text;
  21. objTable.Rows.Add(objRow);
  22. //Tạo command để Insert dữ liệu vào Database nguồn
  23. objCommand = new SqlCommand();
  24. objCommand.Connection = objConnect;
  25. objCommand.CommandType = CommandType.Text;
  26. objCommand.CommandText = "Insert into Danhsach Values (@STT,@Name,@Address, @Phone, @Email)";
  27. //THam số
  28. objCommand.Parameters.Add("@STT", SqlDbType.Int,5,"STT");
  29. objCommand.Parameters.Add("@Name", SqlDbType.NText,30,"Name");
  30. objCommand.Parameters.Add("@Address", SqlDbType.NText,30,"Address");
  31. objCommand.Parameters.Add("@Phone", SqlDbType.NText,10,"Phone");
  32. objCommand.Parameters.Add("@Email", SqlDbType.NText,30,"Email");
  33. //Update dòng mới vào nguồn
  34. objAdapter.InsertCommand = objCommand;
  35. objAdapter.Update(objTable);
  36. //Hủy đối tượng
  37. objCommand.Dispose();
  38. objCommand = null;
  39. objTable.Dispose();
  40. objTable = null;
  41. objAdapter.Dispose();
  42. objAdapter = null;
  43. subDestroyConnect();
  44. }
Bookmark and Share

0 comments:

Post a Comment

Next previous home

Cộng đồng yêu thiết kế Việt Nam Thiet ke website, danang