
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 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 !");
}
}
}
[/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 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 n có 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 Windows Authentication thì b n ph i cungị ư ế ố ế ạ ạ ả
c p Username | Password đăng nh p và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 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 đã 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 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 có 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 có 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 có 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 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 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 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 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.ố
+ 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 có 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 có 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 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ì 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 :ộ ụ ể ế ố
[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ó 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 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 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
AttachDBFileNa
me
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 Database name

exists on server
Integrated
security
Trusted_connecti
on
False True,false,yes,no,ss
pi
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
Info
False True, false, yes, no Sensitive 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

