Bài giảng SQL Server & 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

pdf17 trang | Chia sẻ: vietpd | Lượt xem: 1862 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài giảng SQL Server & C#, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
SQL Server & C# 1 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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 2 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Ví dụ  Chương trình Hello World public class HelloWorld { public static void Main() { System.Console.WriteLine("Hello!"); } } 3 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Hàm main Xuất ra console Khai báo lớp Tạo ứng dụng C# (MS Visual Studio .NET 2008) 4 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 1 2 3 Tạo ứng dụng C# (tiếp) 5 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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); 6 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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(); 7 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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 8 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội SQL Server Client network 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(); 9 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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 10 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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); 11 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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(); } } 12 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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); 13 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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); 14 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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 15 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội 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); } 16 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Bài tập 1. Định nghĩa một quan hệ SinhVien, sau đó viết một 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 2. Viết chương trình C# nhập ID của một sinh viên và in ra thông tin của sinh viên đó 3. Viết chương trình C# nhập tên của sinh viên và in ra thông tin những người có tên như đã nhập 17 EE4509, EE6133 – HK2 2011/2012 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội