1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Tổng quan về cách kết nối tới cơ sở dữ liệu MS SQL Server 2005 ppt

8 690 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 36,44 KB

Nội dung

Tạo kết nối tới sở dữ liệu Author : Xcross87 Dưới đây là tổng quan về cách kết nối tớisở dữ liệu MS SQL Server 2005. Như ở kì trước các bạn đã biết về các lớp cung cấp kết nối tới dữ liệu (Data Connection Provider Classes), tất cả đều sử dụng System.Data.IdbConnection interface cho ứng dụng. Dưới đây là bảng tổng hợp lại các ‘data provider’ được cung cấp bởi Microsoft : Data Provider Namespace Connection Class ODBC System.Data.Odbc OdbcConnection OLE DB System.Data.Oledb OledbConnection Oracle System.Data.OracleClient OracleConnection SQL Server System.Data.SqlClient SqlConnection SQL Server CE System.Data.SqlServerCe SqlCeConnection Bây giờ hãy thử ứng dụng vào tạo một kết nối tới Microsoft SQL Server 2005 (bạn phải setup cái này vào mấy trước đó) dùng lớp ‘SqlConnection’. Dưới đây là một ví dụ kết nối tới database qua máy chủ SQL Server 2005. [code] using System; using System.Data; using System.Data.SqlClient; public class KetNoiSQLServer { public static void Main() { // Tạo connection string để kết nối string connectionString = @"Server = .\SQLEXPRESS;" + "Integrated Security = true"; // Tạo một connection tới máy chủ SqlConnection conn = new SqlConnection(connectionString); // QUA TRINH KET NOI try { // Mở kết nối conn.Open(); Console.WriteLine("Connection opened !"); } catch (SqlException sqle) { // Thông báo biến cố khi kết nối Console.WriteLine("Error: " + sqle.Message); } finally { // Đóng kết nối conn.Close(); Console.WriteLine("Connection closed !"); } Page 1 of 8 Tạo kết nối tới sở dữ liệu Author : Xcross87 } } [/code] Phân tích đoạn code trên một chút : _Phần đầu code ta khai báo tên miền và các lớp cần sử dụng để kết nối, ở đây ta dùng lớp ‘SqlConnection’ để kết nối cho nên dùng tên miền ‘System.Data.SqlConnection’. _Sau đó tạo một chuỗi chứa thông tin tham số truyền khi kết nối, nôm na thì hiểu là thông tin kết nối tới máy chủ. Giải thích ngắn gọn về chuỗi kết nối này [code] // Tạo connection string để kết nối string connectionString = @"Server = .\SQLEXPRESS;" + "Integrated Security = true"; [/code] Với : Server = .\SQLEXPRESS; là tên server mà ta cần kết nối tới, ở đây mặc định sau khi cài Microsoft SQL Server 2005 Express thì default thường là SQLEXPRESS. Còn kí hiệu ở trước “ .\ “ thực chất là gọi tên máy chứa sở dữ liệu cần kết nối. Thông thường nếu bạn làm việc offline thì mặc định là ‘localhost’. Hai kí hiệu : “ .\ “ và “(local)\” là tương đương nhau. Vì thế ở đoạn code trên bạn thể viết lại khai báo server là : @“Server = (local)\SQLEXPRESS” Với : Integrated Security = true đây là chỉ định cách kết nối tới sở dữ liệu, ở đây trên máy của tớ thì để Windows Authentication cho nên tham số ‘Integrated Security’ mang giá trị ‘True’ như trên khi kết nối, nếu bạn không dùng Windows Authentication thì bạn phải cung cấp Username | Password đăng nhập vào hệ sở dữ liệu. Còn nhiều tham số trong chuỗi kết nối ( connection string ) khác nhưng sẽ đề cập sau chi tiết hơn về thông tin kết nối. _Sau đó tạo một đối tượng chứa thông tin kết nối ( thông tin này nằm trong chuỗi kết nối connection string ) : [code] // Tạo một connection tới máy chủ SqlConnection conn = new SqlConnection(connectionString); [/code] _Vậy là bạn đã một đối tượng chứa thông tin kết nối đầy đủ. Việc tiếp theo là ‘THỬ” kết nối tới sở dữ liệu xem thế nào. _Yêu cầu đối tượng mở kết nối tớ sở dữ liệu. [code] Page 2 of 8 Tạo kết nối tới sở dữ liệu Author : Xcross87 try { // Mở kết nối conn.Open(); Console.WriteLine("Connection opened !"); } [/code] _Nếu như trong trường hợp kết nối lỗi thì kết nối tự động ngắt đi và dừng chương trình. Nếu như ta không dùng cặp quan hệ ‘ try…catch…finally ‘ để kiểm tra kết nối thì nếu gặp lỗi thì sẽ thông báo lỗi và ta không biết được lỗi gì khi kết nối vì vậy ở đây lỗi bắt được bị ném vào trong ‘catch’ và in ra lỗi bắt được ( lỗi bắt được luôn được ghi ở chế độ Debug nếu như bạn RUN chương trình ở Debug mode chứ không phải là Release mode ). [code] catch (SqlException sqle) { // Thông báo biến cố khi kết nối Console.WriteLine("Error: " + sqle.Message); } [/code] Lớp ‘SqlException’ là lớp chứa thông tin về các lỗi bắt trong quá trình kết nối tới hệ cơ sở dữ liệu SQL Server. Bạn thể xem thông tin chi tiết hơn về các Exception của SQL trong trang chủ MSDN. _Cuối cùng khi kết nối thành công và không gặp trở ngại gì thì ta tiến hành công việc trong thẻ finally. Ở đây là đóng kết nối. [code] finally { // Đóng kết nối conn.Close(); Console.WriteLine("Connection closed !"); } [/code] _Chương trình tưởng chừng đơn giản đọc rất dễ hiểu nhưng nếu bạn kiến thức sâu hơn về kết nỗi và tương quan server/client sẽ thấy một số vấn đề ở đây. Tớ đưa ra một số vấn đề mà tớ đã gặp : + Giả sử kết nối bị lỗi không thực hiện được thì kết quả ra màn hình chỉ thông báo lỗi thôi đùng không ? . Trả lới : Sai ! cả thông báo đóng kết nối nữa. Lý do : vì thẻ ‘finally’ dùng để đưa ra thao tác cuối cùng của công việc cho nên sau khi thông báo lỗi xong nó sẽ nhảy tiếp tục thẻ ‘finally’. + Nếu mà kết nối thế này bị hao tổn tài nguyên máy không? Trả lời : ! Tốn cả 2 bên server và client. Nếu mà càng nhiều kết nối thực hiện thì hao tổn càng nhiều và làm chậm server rất nhiều và nhiều lúc quá giới hạn cho phép sẽ không thể thực hiện được kết nối nữa. Vì vậy sau khi mở kết nối thành công và hoàn thành quá trình xử lý thông tin thì phải đóng kết nối ngay. Page 3 of 8 Tạo kết nối tới sở dữ liệu Author : Xcross87 + Làm cách nào đảm bảo đóng/mở kết nối đúng quy cách tránh ảnh hưởng nhiều 2 bên server và client ? Trả lời : Bạn thể đóng và mở kết nối ngay trong khi ‘ try ‘ và cuối cùng đóng thêm một kết nối tại thẻ ‘finally’. Bạn thể tham khảo code mẫu dưới đây : Code minh họa đóng/ mở kết nối an toàn : [code] // QUA TRINH KET NOI try { // Mở kết nối conn.Open(); Console.WriteLine("Connection opened !"); // // Xử lý công việc online // // Đóng kết nối conn.Close(); // // Xử lý công việc offline // // Mở kết nối lần nứa conn.Open(); // // Xử lý công việc online // // Đóng lại kết nối conn.Close(); } catch (SqlException sqle) { // Thông báo biến cố khi kết nối Console.WriteLine("Error: " + sqle.Message); } finally { // Đóng kết nối conn.Close(); Console.WriteLine("Connection closed !"); } [/code] Nếu như khi kết nốiSQL Server không xài chế độ Windows Authentication mà username | password riêng để truy cập (access) sở dữ liệu (database) thì trong chuỗi kết nối ( connection string ) bạn phải cung cấp username | password cho thông tin kết nối. Dưới đây là một ví dụ dùng username | password để kết nối : Page 4 of 8 Tạo kết nối tới sở dữ liệu Author : Xcross87 [code] string connectionString = @"Server = .\SQLEXPRESS; " + "User ID = sa; " + "Password = pete_87"; [/code] Ở đây : ‘sa’ là tên mặc định cho system administrator và ‘password’ là tớ đặt. Thông số này tùy thuộc vào thông số máy chủ được cài đặt. Bạn thể system admin và không xài password. Lúc này password sẽ được mặc định (default) là chuỗi rỗng (empty string) cho nên trong chuỗi kết nối bạn thể để tham số là : Password =; Nhưng đây không phải một code tốt ^&^. Dưới đây là bảng các tham số truyền trong chuỗi kết nối, cung cấp thông tin khi kết nối tới máy chủ. Name Alias Default Value Allowed Value Description Application Name .NET SqlClient Data Provider Any string Name of Application AttachDBFileNam e Extended properties, initial file name None Any path Full path of attachable database file Connect timeout Connection Timeout 15 0-32767 Seconds to wait to connect Data Source Server,Address, Network Address None Servername or network address Name of the target SQL Server instance Encrypt False True,false, Yes,no Use SSL encryption Initial Catalog Database None Any database that exists on server Database name Integrated security Trusted_connectio n False True,false,yes,no,ssp i Authentication mode Network library Net Dbmssocn Dbnmpntw, Dbmsrpcn, Dbmsadsn, Dbmsgnet, Dbmslpcn, Dbmslpcn, Dbmsspxn, Dbmssocn Network.dll Packet Size 8192 Multiple of 512 Network packet size in bytes Password PWD None Any string Password if not using win authen Persist Security False True, false, yes, no Sensitive info Page 5 of 8 Tạo kết nối tới sở dữ liệu Author : Xcross87 Info should be passed back after connecting User ID UID None Username if not using win authen Workstation ID Local Computer Name Anystring Workstation connecting to SQL Server Ví dụ một vài tham số kết nối : Data Source = .\SQLEXPRESS Server = .\SQLEXPRESS Address = .\SQLEXPRESS Addr = .\SQLEXPRESS Network Address = .\SQLEXPRESS Chú ý là : như đã nói ở trên : .\SQLEXPRESS tương đương với (local)\EXPRESS Thử áp dụng vào viết một ứng dụng Console báo cáo thông tin về kết nối. Kết nối tới SQL Server dùng SqlConnection Dùng code mẫu sau : [code] using System; using System.Data; using System.Data.SqlClient; public class ThongTinKetNoi { static void Main() { // Connection string string connString = @"Server = .\SQLEXPRESS; " + "Integrated Security = SSPI"; // Create connection SqlConnection conn = new SqlConnection(connString); try { // Open connection conn.Open(); Console.WriteLine("Connection opened."); Page 6 of 8 Tạo kết nối tới sở dữ liệu Author : Xcross87 // Display connection properties Console.WriteLine("Connection Properties:"); Console.WriteLine("\tConnection String: {0}",conn.ConnectionString); Console.WriteLine("\tDatabase: {0}",conn.Database); Console.WriteLine("\tDataSource: {0}",conn.DataSource); Console.WriteLine("\tServerVersion: {0}",conn.ServerVersion); Console.WriteLine("\tState: {0}",conn.State); Console.WriteLine("\tWorkstationId: {0}",conn.WorkstationId); } catch (SqlException e) { // Display error Console.WriteLine("Error: " + e); } finally { // Close connection conn.Close(); Console.WriteLine("Connection closed."); } } } [/code] Đọc qua code bạn thể hiểu code dùng như thế nào. Ở đây mình ghi chú thêm một vài điều _Nếu khi kết nối bạn không chỉ rõ là kết nối tới database nào thì mặc định database sẽ là : master _Nếu muốn thay đổi database kết nối thì bạn thêm tham số ‘Database = db_name;’ vào trong chuỗi kết nối. _Nếu bạn đưa vào một database_name không tồn tại trong server thì sẽ gặp thông báo lỗi : “System.Data.SqlClient.SqlException : Cannot open database ‘db_name’ requested by the login. The login failed.” _Workstation chỉ định tên của máy mà làm việc với máy chủ database cho nên mỗi máy kết nối tới sẽ thu kết quả là tên của máy. Nếu mà bạn muốn tất cả các máy kết nối tới máy chủ SQL một Workstation ID giống nhau thì trong chuỗi kết nối (connection string) bạn thêm tham số cho Workstation ID. Ví dụ : Workstation ID = Vo Danh Tieu Tot; Kết nối tới SQL Server dùng OleDbConnection Bạn nên đọc bài : ADO.NET bản do tớ viết trước rồi tham khảo ở đây cũng được. Như đã viết ở đầu bài, khi kết nối ta thể luân chuyển giữa các nhà cung cấp kết nối để kết nối tới sở dữ liệu. Ví dụ ở trên là kết nối tới SQL Server dùng lớp ‘SqlConnection’. Phần này tương tự sẽ dùng lớp OleDbConnection để kết nối tới SQL Server. Page 7 of 8 Tạo kết nối tới sở dữ liệu Author : Xcross87 [code] using System; using System.Data; using System.Data.OleDb; public class KetNoiDungOleDbConnection { static void Main() { // Connection string string connString = @"Provider = SqlOleDb; Data Source = .\SQLEXPRESS; Integrated Security = SSPI"; // Create connection OleDbConnection conn = new OleDbConnection(connString); try { // Open connection conn.Open(); Console.WriteLine("Connection opened."); // Display connection properties Console.WriteLine("Connection Properties:"); Console.WriteLine("\tConnection String: {0}",conn.ConnectionString); Console.WriteLine("\tDatabase: {0}",conn.Database); Console.WriteLine("\tDataSource: {0}",conn.DataSource); Console.WriteLine("\tServerVersion: {0}",conn.ServerVersion); Console.WriteLine("\tState: {0}",conn.State); } catch (OleDbException e) { // Display error Console.WriteLine("Error: " + e); } finally { // Close connection conn.Close(); Console.WriteLine("Connection closed."); } } } [/code] Kết nối tới sở dữ liệu không khó và phức tạp nhưng đòi hỏi kĩ năng và biết cách vận dụng khi kết nối một cách hợp lý, tránh hao tổn tài nguyên máy. Kết thúc bài về ‘tạo kết nối tới sở dữ liệu Page 8 of 8 . Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 Dưới đây là tổng quan về cách kết nối tới cơ sở dữ liệu MS SQL Server 2005. Như ở kì trước. tới cơ sở dữ liệu. Ví dụ ở trên là kết nối tới SQL Server dùng lớp ‘SqlConnection’. Phần này tương tự sẽ dùng lớp OleDbConnection để kết nối tới SQL Server. Page

Ngày đăng: 27/01/2014, 03:20

TỪ KHÓA LIÊN QUAN

w