Xem mẫu

  1. SQL Server & C# EE4509, EE6133 – HK2 2011/2012 1 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  2. Giới thiệu C# C# là một ngôn ngữ lập trình được phát triển bởi  Microsoft (năm 2002), cho phép xây dựng các ứng dụng trên nền tảng .NET Dựa trên C++ và Java  Một số đặc điểm:  Thuần tuý hướng đối tượng  Không dùng con trỏ và địa chỉ  Đơn giản và dễ học  EE4509, EE6133 – HK2 2011/2012 2 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  3. Ví dụ Chương trình Hello World  Khai báo lớp public class HelloWorld Hàm main { public static void Main() Xuất ra console { System.Console.WriteLine("Hello!"); } } EE4509, EE6133 – HK2 2011/2012 3 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  4. Tạo ứng dụng C# (MS Visual Studio .NET 2008) 1 2 3 EE4509, EE6133 – HK2 2011/2012 4 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  5. Tạo ứng dụng C# (tiếp) EE4509, EE6133 – HK2 2011/2012 5 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  6. IO chuẩn trong C# Xuất ra đầu ra chuẩn:  System.Console.Write(...)  System.Console.WriteLine(...)  Đọc từ đầu vào chuẩn:  string System.Console.ReadLine()   chuyển sang các dạng dữ liệu mong muốn Ví dụ:  System.Console.Write("Nhap mot so nguyen: ");  string s = System.Console.ReadLine(); int val = int.Parse(s); EE4509, EE6133 – HK2 2011/2012 6 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  7. Giao tiếp với SQL Server Thư viện cần sử dụng: System.Data.SqlClient  using System.Data.SqlClient;  Các lớp cần sử dụng:  SqlConnection: thiết lập kết nối với SQL Server  SqlCommand: thực thi các câu truy vấn  SqlParameter: tham số của câu truy vấn  SqlDataReader: lấy dữ liệu trả về của câu truy vấn  SqlException: xử lý lỗi  Tạo đối tượng trong C#: bằng toán tử new  SqlConnection conn = new SqlConnection();  EE4509, EE6133 – HK2 2011/2012 7 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  8. Thiết lập kết nối Sử dụng đối tượng của lớp SqlConnection  Các tham số được đưa vào thuộc tính  ConnectionString Gọi hàm Open() để thiết lập kết nối  Gọi hàm Close() để đóng kết nối  SQL network Client Server EE4509, EE6133 – HK2 2011/2012 8 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  9. Ví dụ const string SERVER = "localhost"; const string INSTANCE = "SQLEXPRESS"; const string USERNAME = "kien"; const string PASSWORD = "kien"; const string DATABASE = "abc"; SqlConnection conn = new SqlConnection(); conn.ConnectionString = string.Format( @"Data Source={0}\{1};" + "Initial Catalog={2};" + "User Id={3};" + "Password={4};" + "Connection Timeout=10", SERVER, INSTANCE, DATABASE, USERNAME, PASSWORD); conn.Open(); // Do stuff... conn.Close(); EE4509, EE6133 – HK2 2011/2012 9 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  10. Thực thi câu truy vấn Tạo đối tượng SqlCommand  SqlCommand cmd = new SqlCommand(query, conn);  query: chuỗi chứa câu truy vấn conn: kết nối đã được thiết lập Tuỳ từng trường hợp, dùng một trong các hàm sau để  thực thi câu truy vấn: ExecuteNonQuery():  Trả về số hàng đã bị ảnh hưởng (thêm/bớt/thay đổi) ExecuteScalar():  Trả về giá trị đầu tiên trả về của câu truy vấn ExecuteReader():  Trả về một đối tượng SqlDataReader dùng để đọc dữ liệu EE4509, EE6133 – HK2 2011/2012 10 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  11. Ví dụ: SELECT (1) SqlCommand cmd = new SqlCommand( "select count(*) from Book", conn); object result = cmd.ExecuteScalar(); int count = int.Parse(object.ToString()); System.Console.WriteLine( "Row count: {0}", count); EE4509, EE6133 – HK2 2011/2012 11 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  12. Ví dụ: SELECT (2) SqlCommand cmd = new SqlCommand ( "select * from Book", conn); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { for (int i = 0; i < reader.FieldCount; i++) { System.Console.Write( reader.GetValue(i) + "\t"); } System.Console.WriteLine(); } } EE4509, EE6133 – HK2 2011/2012 12 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  13. Ví dụ: INSERT SqlCommand cmd = new SqlCommand( "insert into Book(title, author)" + "values ('Gone with the wind', 2)," + "('Petit prince', 5)", conn); int count = cmd.ExecuteNonQuery(); System.Console.WriteLine( "{0} rows inserted", count); EE4509, EE6133 – HK2 2011/2012 13 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  14. Ví dụ: UPDATE SqlCommand cmd = new SqlCommand( "update Book" + "set author=4" + "where author=10", conn); int count = cmd.ExecuteNonQuery(); System.Console.WriteLine( "{0} rows updateed", count); EE4509, EE6133 – HK2 2011/2012 14 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  15. Xử lý lỗi trong C# C# dùng cơ chế xử lý lỗi bằng câu lệnh try…catch  try { // khối lệnh cần thực hiện } catch (ExpType exp) { // xử lý lỗi } Khi xảy ra lỗi, đoạn lệnh trong khối try sẽ dừng và nhảy tới phần  xử lý lỗi trong khối catch exp là đối tượng chứa thông tin về lỗi cần xử lý  Các đối tượng trong thư viện System.Data.SqlClient  khi xảy ra lỗi sẽ tạo ra đối tượng lỗi có kiểu SqlException EE4509, EE6133 – HK2 2011/2012 15 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  16. Xử lý lỗi SQL trong C# (tiếp) Việc xử lý lỗi SQL trong C# sẽ có dạng như sau:  try { // các câu lệnh với SQL... } catch (SqlException exp) { // xử lý lỗi } Ví dụ:  try { // các câu lệnh với SQL... } catch (SqlException exp) { System.Console.WriteLine(exp.Message); } EE4509, EE6133 – HK2 2011/2012 16 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  17. Bài tập Định nghĩa một quan hệ SinhVien, sau đó viết một 1. chương trình C# nhập thông tin sinh viên, thêm vào CSDL và in ra ID của sinh viên vừa được thêm Viết chương trình C# nhập ID của một sinh viên và 2. in ra thông tin của sinh viên đó Viết chương trình C# nhập tên của sinh viên và in 3. ra thông tin những người có tên như đã nhập EE4509, EE6133 – HK2 2011/2012 17 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội