Your SlideShare is downloading. ×
Tạo kết nối tới cơ sở dữ liệu                               Author : Xcross87   2007Dưới đây là tổng quan về cách kết nối ...
Tạo kết nối tới cơ sở dữ liệu                             Author : Xcross87   2007            {                   // Thông...
Tạo kết nối tới cơ sở dữ liệu                                Author : Xcross87   2007Windows Authentication thì bạn phải c...
Tạo kết nối tới cơ sở dữ liệu                              Author : Xcross87   2007            }[/code]Lớp „SqlException‟ ...
Tạo kết nối tới cơ sở dữ liệu                             Author : Xcross87   2007[code]         // QUA TRINH KET NOI     ...
Tạo kết nối tới cơ sở dữ liệu                                     Author : Xcross87   2007[code]string connectionString = ...
Tạo kết nối tới cơ sở dữ liệu                            Author : Xcross87   2007security                 ion             ...
Tạo kết nối tới cơ sở dữ liệu                           Author : Xcross87   2007Chú ý là : như đã nói ở trên : .SQLEXPRESS...
Tạo kết nối tới cơ sở dữ liệu                             Author : Xcross87   2007            }            finally        ...
Tạo kết nối tới cơ sở dữ liệu                          Author : Xcross87   2007Phần này tương tự sẽ dùng lớp OleDbConnecti...
Tạo kết nối tới cơ sở dữ liệu                            Author : Xcross87   2007      }}[/code]Kết nối tới cơ sở dữ liệu ...
Upcoming SlideShare
Loading in...5
×

3.tao mot ket noi toi co so du lieu dung c#

7,117

Published on

1 Comment
1 Like
Statistics
Notes
  • blessing_11111@yahoo.com

    My name is Blessing
    i am a young lady with a kind and open heart,
    I enjoy my life,but life can't be complete if you don't have a person to share it
    with. blessing_11111@yahoo.com

    Hoping To Hear From You
    Yours Blessing
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
7,117
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
153
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "3.tao mot ket noi toi co so du lieu dung c#"

  1. 1. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007Dướ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 các bạn đã biết về các lớp cung cấp kết nối tới dữ liệu (DataConnection Provider Classes), tất cả đều sử dụng System.Data.IdbConnectioninterface cho ứng dụng. Dưới đây là bảng tổng hợp lại các „data provider‟ đượccung cấp bởi Microsoft :Data Provider Namespace Connection ClassODBC System.Data.Odbc OdbcConnectionOLE DB System.Data.Oledb OledbConnectionOracle System.Data.OracleClient OracleConnectionSQL Server System.Data.SqlClient SqlConnectionSQL Server CE System.Data.SqlServerCe SqlCeConnectionBâ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ạnphải setup cái này vào mấy trước đó) dùng lớp „SqlConnection‟. Dưới đây là mộtví 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) Page 1 of 11
  2. 2. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007 { // 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]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 tadù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ểulà 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 cơ 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ạncó 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 cơ 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 Page 2 of 11
  3. 3. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007Windows Authentication thì bạn phải cung cấp Username | Password đăng nhậpvào hệ cơ 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ậpsau 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ỗikế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 đã có 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 cơ sở dữ liệu xem thế nào._Yêu cầu đối tượng mở kết nối tớ cơ sở dữ liệu.[code]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 mà có lỗi thì kết nối tự động ngắt đi và dừngchương trình. Nếu như ta không dùng cặp quan hệ „ try…catch…finally „ để kiểmtra kết nối thì nếu gặp lỗi thì sẽ có thông báo lỗi và ta không biết được lỗi gì khi kếtnố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 ở Debugmode 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); Page 3 of 11
  4. 4. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007 }[/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ớihệ cơ sở dữ liệu SQL Server. Bạn có thể xem thông tin chi tiết hơn về cácException 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ôngviệ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 có kiến thứcsâu hơn về kết nỗi và tương quan server/client sẽ thấy một số vấn đề ở đây. Tớ đưara 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ỉ cóthông báo lỗi thôi đùng không ? . Trả lới : Sai ! Có 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 saukhi 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 có bị hao tổn tài nguyên máy không? Trả lời : Có !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ổncà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. + Làm cách nào đảm bảo đóng/mở kết nối đúng quy cách tránh ảnh hưởngnhiều 2 bên server và client ? Trả lời : Bạn có thể đóng và mở kết nối ngay trongkhi „ try „ và cuối cùng đóng thêm một kết nối tại thẻ „finally‟. Bạn có thể thamkhảo code mẫu dưới đây : Code minh họa đóng/ mở kết nối an toàn : Page 4 of 11
  5. 5. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007[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ối mà SQL Server không xài chế độ Windows Authentication màcó username | password riêng để truy cập (access) cơ sở dữ liệu (database) thì trongchuỗi kết nối ( connection string ) bạn phải cung cấp username | password chothông tin kết nối. Dưới đây là một ví dụ dùng username | password để kết nối : Page 5 of 11
  6. 6. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007[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 có thể có systemadmin 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 có 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 khikết nối tới máy chủ. Default Name Alias Allowed Value Description ValueApplication .NET Any string Name ofName SqlClien Application t Data ProviderAttachDBFileNa Extended None Any path Full path ofme properties, initial attachable file name database fileConnect timeout Connection 15 0-32767 Seconds to Timeout wait to connectData Source Server,Address, None Servername or Name of the Network network address target SQL Address Server instanceEncrypt False True,false, Use SSL Yes,no encryptionInitial Catalog Database None Any database that Database exists on server nameIntegrated Trusted_connect False True,false,yes,no, Authenticati Page 6 of 11
  7. 7. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007security ion sspi on modeNetwork library Net Dbmsso Dbnmpntw, Network.dll cn Dbmsrpcn, Dbmsadsn, Dbmsgnet, Dbmslpcn, Dbmslpcn, Dbmsspxn, DbmssocnPacket Size 8192 Multiple of 512 Network packet size in bytesPassword PWD None Any string Password if not using win authenPersist Security False True, false, yes, SensitiveInfo no info should be passed back after connectingUser ID UID None Username if not using win authenWorkstation ID Local Anystring Workstation Comput connecting er Name to SQL ServerVí dụ một vài tham số kết nối :Data Source = .SQLEXPRESSServer = .SQLEXPRESSAddress = .SQLEXPRESSAddr = .SQLEXPRESSNetwork Address = .SQLEXPRESS Page 7 of 11
  8. 8. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007Chú ý là : như đã nói ở trên : .SQLEXPRESS tương đương với (local)EXPRESSThử á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 SqlConnectionDù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."); // 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); Page 8 of 11
  9. 9. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007 } finally { // Close connection conn.Close(); Console.WriteLine("Connection closed."); } }}[/code]Đọc qua code bạn có thể hiểu code dùng như thế nào. Ở đây mình ghi chú thêmmộ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 databasesẽ 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ôngbáo lỗi :“System.Data.SqlClient.SqlException : Cannot open database „db_name‟ requestedby 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ỗimá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ếtnối tới máy chủ SQL có 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 OleDbConnectionBạn nên đọc bài : ADO.NET cơ 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 có thể luân chuyển giữa các nhà cung cấp kếtnối để kết nối 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‟. Page 9 of 11
  10. 10. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007Phần này tương tự sẽ dùng lớp OleDbConnection để kết nối tới SQL Server.[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."); } Page 10 of 11
  11. 11. Tạo kết nối tới cơ sở dữ liệu Author : Xcross87 2007 }}[/code]Kết nối tới cơ sở dữ liệu không khó và phức tạp nhưng đòi hỏi kĩ năng và biết cáchvậ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 cơ sở dữ liệu Page 11 of 11

×