Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
385,47 KB
Nội dung
SQL Server & C# EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội Giới thiệu C# C# ngôn ngữ lập trình phát triển Microsoft (năm 2002), cho phép xây dựng ứng dụng tảng NET Dựa C++ Java Một số đặc điểm: Thuần tuý hướng đối tượng Không dùng trỏ địa Đơn giản dễ học 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 Khai báo lớp public class HelloWorld Hàm main { public static void Main() Xuất console { System.Console.WriteLine("Hello!"); } } EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội Tạo ứng dụng C# (MS Visual Studio NET 2008) EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội Tạo ứng dụng C# (tiếp) EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội IO chuẩn C# Xuất đầu chuẩn: System.Console.Write( ) System.Console.WriteLine( ) Đọc từ đầu vào chuẩn: string System.Console.ReadLine() chuyển sang dạng 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 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âu truy vấn SqlParameter: tham số câu truy vấn SqlDataReader: lấy liệu trả câu truy vấn SqlException: xử lý lỗi Tạo đối tượng C#: toán tử new SqlConnection conn = new SqlConnection(); 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 lớp SqlConnection Các tham số đư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 Server network Client EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội Ví dụ const const const const const string string string string string SERVER = INSTANCE USERNAME PASSWORD DATABASE "localhost"; = "SQLEXPRESS"; = "kien"; = "kien"; = "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 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 thiết lập Tuỳ trường hợp, dùng hàm sau để thực thi câu truy vấn: 10 ExecuteNonQuery(): Trả số hàng bị ảnh hưởng (thêm/bớt/thay đổi) ExecuteScalar(): Trả giá trị trả câu truy vấn ExecuteReader(): Trả đối tượng SqlDataReader dùng để đọc liệu 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 C# C# dùng chế xử lý lỗi câu lệnh try…catch try { // khối lệnh cần thực } catch (ExpType exp) { // xử lý lỗi } Khi xảy lỗi, đoạn lệnh khối try dừng nhảy tới phần xử lý lỗi khối catch exp đối tượng chứa thông tin lỗi cần xử lý Các đối tượng thư viện System.Data.SqlClient xảy lỗi tạo đố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 C# (tiếp) Việc xử lý lỗi SQL C# có dạng sau: try { // câu lệnh với SQL } catch (SqlException exp) { // xử lý lỗi } Ví dụ: try { // 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 17 Định nghĩa quan hệ SinhVien, sau viết chương trình C# nhập thông tin sinh viên, thêm vào CSDL in ID sinh viên vừa thêm Viết chương trình C# nhập ID sinh viên in thông tin sinh viên Viết chương trình C# nhập tên sinh viên in thông tin người có tên nhập EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nội [...]... 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())... 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 2 3 17... 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... 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ý... 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 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 đó 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 EE4509, EE6133 – HK2 2011/2012 TS Đào Trung Kiên – ĐH Bách khoa Hà Nộ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( ... INSTANCE USERNAME PASSWORD DATABASE "localhost"; = "SQLEXPRESS"; = "kien"; = "kien"; = "abc"; SqlConnection conn = new SqlConnection(); conn.ConnectionString = string.Format( @"Data Source={0}{1};"... 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 thiết lập... đ c liệu 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();