資料庫的連線串

hxora發表於2004-08-24
在資料庫的各種應用程式開發中,連線資料庫是資料庫應用程式開發的第一步,同時也是最重要的一步。而對於不同的資料庫他們的連線模式各有不同,對應的連線串也不同。
????????????
????? Sql Server
????? · ODBC
????? o 標準連線(Standard Security):
????? "Driver={SQL Server};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;"
????? 1)當伺服器為本地時Server可以使用(local);
????? "Driver={SQL Server};Server=(local);Database=pubs;Uid=sa;Pwd=asdasd;"
????? 2)當連線遠端伺服器時,需指定地址、埠號和網路庫
????? "Driver={SQL Server};Server=130.120.110.001;Address=130.120.110.001,1052;Network=dbmssocn;Database=pubs;Uid=sa;Pwd=asdasd;"
????? 注:Address引數必須為IP地址,而且必須包括埠號
????? o 信任連線(Trusted connection): (Microsoft Windows NT 整合了安全性)
????? "Driver={SQL Server};Server=Aron1;Database=pubs;Trusted_Connection=yes;"
????? 或者
????? "Driver={SQL Server};Server=Aron1;Database=pubs; Uid=;Pwd=;"
????? o 連線時彈出輸入使用者名稱和口令對話方塊:
????? Conn.Properties("Prompt") = adPromptAlways
????? Conn.Open "Driver={SQL Server};Server=Aron1;DataBase=pubs;"
????? · OLE DB, OleDbConnection (.NET)
????? o 標準連線(Standard Security):
????? "Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"
????? o 信任連線(Trusted connection):
????? "Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"
????? (如果連線一個具體的已命名SQLServer例項,使用Data Source=Servere Name/Instance Name;但僅適用於 SQLServer2000)例如:”Provider=sqloledb;Data Source=MyServerName/MyInstanceName;Initial Catalog=MyDatabaseName;User Id=MyUsername;Password=MyPassword;”
????? o 連線時彈出輸入使用者名稱和口令對話方塊:
????? Conn.Provider = "sqloledb"
????? Conn.Properties("Prompt") = adPromptAlways
????? Conn.Open "Data Source=Aron1;Initial Catalog=pubs;"
????? o 通過IP地址連線:
????? "Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
????? (DBMSSOCN=TCP/IP代替Named Pipes, Data Source的末尾是需要使用的埠號(預設為1433))
????? · SqlConnection (.NET)
????? o 標準連線(Standard Security):
????? "Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"
????? 或者
????? "Server=Aron1;Database=pubs;User ID=sa;Password=asdasd;Trusted_Connection=False"
????? (這兩個連線串的結果相同)
????? o 信任連線(Trusted connection):
????? "Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"
????? 或者
????? "Server=Aron1;Database=pubs;Trusted_Connection=True;"
????? (這兩個連線串的結果相同)
????? (可以用serverName/instanceName代替Data Source,取值為一個具體的SQLServer例項,但僅適用於 SQLServer2000)
????? o 通過IP地址連線:
????? "Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
????? (DBMSSOCN=TCP/IP代替Named Pipes, Data Source的末尾是需要使用的埠號(預設為1433))
????? o SqlConnection連線的宣告:
????? C#:
????? using System.Data.SqlClient;
????? SqlConnection SQLConn = new SqlConnection();
????? SQLConn.ConnectionString="my connectionstring";
????? SQLConn.Open();
?????
????? VB.NET:
????? Imports System.Data.SqlClient
????? Dim SQLConn As SqlConnection = New SqlConnection()
????? SQLConn.ConnectionString="my connectionstring"
????? SQLConn.Open()
????? · Data Shape
????? o MS Data Shape
????? "Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=Aron1;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
????? · 更多
????? o 如何定義使用哪個協議
????? § 舉例:
????? "Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
????? 名稱 網路協議庫
????? dbnmpntw Win32 Named Pipes
????? dbmssocn Win32 Winsock TCP/IP
????? dbmsspxn Win32 SPX/IPX
????? dbmsvinn Win32 Banyan Vines
????? dbmsrpcn Win32 Multi-Protocol (Windows RPC)
????? § 重要提示
????? 當通過SQLOLEDB提供者進行連線時使用以下語法:
????? Network Library=dbmssocn
????? 但通過MSDASQL提供者進行連線時使用以下語法:
????? Network=dbmssocn
????? o 所有SqlConnection連線串屬性
????? § 下表顯示了ADO.NET SqlConnection物件的所有連線串屬性. 其中大多數的屬性也在ADO中使用.所有屬性和描述來自於msdn.
????? 名稱 預設值 描述
????? Application Name 應用程式名稱或者當沒有提供應用程式時為.Net SqlClient資料提供者
????? AttachDBFilename或者extended properties或者Initial File Name 主要檔案的名字,包括相關聯資料庫的全路徑。資料庫名字必須通過關鍵字'database'來指定。
????? Connect Timeout或者Connection Timeout 15 在中止連線請求,產生錯誤之前等待伺服器連線的時間(以秒為單位)
????? Connection Lifetime 0 當一個連線返回到連線池,當前時間與連線建立時間的差值,如果時間段超過了指定的連線生存時間,此連線就被破壞。它用於聚集設定中在執行伺服器和準備上線的伺服器之間強制負載平衡。
????? Connection Reset 'true' 當連線從連線池移走時決定是否重置資料庫連線。當設定為'false'時用於避免獲得連線時的額外伺服器往復代價。
????? Current Language SQL Server語言記錄名稱
????? Data Source或Server或Address或Addr或Network Address 要連線的SQL Server例項的名字或者網路地址
????? Enlist 'true' 為真時,連線池自動列出建立執行緒的當前事務上下文中的連線。
????? Initial Catalog或Database 資料庫名
????? Integrated Security或者Trusted_Connection 'false' 連線是否為信任連線。其取值為'true', 'false'和'sspi'(等於'true').
????? Max Pool Size 100 連線池中允許的最大連線數
????? Min Pool Size 0 連線池中允許的最小連線數
????? Network Library或Net 'dbmssocn' 網路庫用於建立與一個 SQL Server例項的連線。值包括dbnmpntw (命名管道), dbmsrpcn (多協議), dbmsadsn (Apple Talk), dbmsgnet (VIA), dbmsipcn (共享記憶體) 和 dbmsspxn (IPX/SPX), 和 dbmssocn (TCP/IP). 所連線的系統必須安裝相應的動態連結庫。如果你沒有指定網路,當你使用一個區域性的伺服器 (例如, "." 或者 "(local)"),將使用共享記憶體
????? Packet Size 8192 與 SQL Server的一個例項通訊的網路包位元組大小
????? Password-或Pwd SQL Server帳戶登入口令
????? Persist Security Info 'false' 設定為'false',當連線已經開啟或者一直處於開啟狀態時,敏感性的安全資訊 (如口令)不會返回作為連線的一部分資訊。
????? Pooling 'true' 為真時,從合適的連線池中取出SQLConnection物件,或者必要時建立SQLConnection物件並把它增加到合適的連線池中。
????? User ID SQL Server登入使用者
????? Workstation ID the local computer name 連線到SQL Server的工作站名稱
????? § 注意:
????? 使用分號分隔每個屬性
????? 如果一個名字出現多於兩次,在連線串中的最後一次出現的值將被使用。
????? 如果你通過在應用中由使用者輸入欄位的值來構建連線串,你必須保證使用者不會通過使用者值裡的另一個值插入到一個額外的屬性來改變連線串。
????? Access
????? · ODBC
????? o 標準連線(Standard Security):
????? "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/mydatabase.mdb;Uid=Admin;Pwd=;"
????? o 組(系統資料庫)連線 (Workgroup):
????? 兩種方法分別為:在連線串或在開啟資料集中指定使用者名稱和口令
????? "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/mydatabase.mdb;SystemDB=C:/mydatabase.mdw;","admin", ""
????? 或
????? if(pDB.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/mydatabase.mdb;SystemDB=C:/mydatabase.mdw;", "", "DatabaseUser", "DatabasePass"))
????? {DoSomething();
????? pDB.Close();
????? }
????? o 獨佔方式(Exclusive):
????? "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/mydatabase.mdb;Exclusive=1;Uid=admin;Pwd="
????? · OLE DB, OleDbConnection (.NET)
????? o 標準連線(Standard Security):
????? "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=/somepath/mydb.mdb;User Id=admin;Password=;"
????? o 組連線 (系統資料庫)
????? "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=/somepath/mydb.mdb;Jet OLEDB:System Database=system.mdw;","admin", ""
????? o 帶口令的連線:
????? "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=/somepath/mydb.mdb;Jet OLEDB:Database Password=MyDbPassword;","admin", ""
????? · Oracle
????? · ODBC
????? o 新版本:
????? "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"
????? o 舊版本:
????? "Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"
????? · OLE DB, OleDbConnection (.NET)
????? o 標準連線(Standard Security):
????? "Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;"
????? 這是Microsoft的格式, 下面是Oracle的格式(提供者不同)
????? "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;"
????? 注意:"Data Source=" 必須根據相應的命名方法設定為Net8名稱。例如對於區域性命名,它是tnsnames.ora中的別名,對於Oracle命名,它是Net8網路服務名
????? o 信任連線(Trusted Connection):
????? "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;"
????? 或者設定user ID為 "/"
????? "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=/;Password=;"
????? · OracleConnection (.NET)
????? o 標準連線:
????? "Data Source=Oracle8i;Integrated Security=yes";
????? 這隻對Oracle 8i release 3或更高版本有效
????? o OracleConnection宣告:
????? C#:
????? using System.Data.OracleClient;
????? OracleConnection OracleConn = new OracleConnection();
????? OracleConn.ConnectionString = "my connectionstring";
????? OracleConn.Open();
?????
????? VB.NET:
????? Imports System.Data.OracleClient
????? Dim OracleConn As OracleConnection = New OracleConnection()
????? OracleConn.ConnectionString = "my connectionstring"
????? OracleConn.Open()
????? · Data Shape
????? o MS Data Shape:
????? "Provider=MSDataShape.1;Persist Security Info=False;Data Provider=MSDAORA;Data Source=orac;user id=username;password=mypw"
????? · MySQL
????? · ODBC
????? o 本地資料庫:
????? "Driver={mySQL};Server=mySrvName;Option=16834;Database=mydatabase;"
????? Sever引數也可以使用localhost作為其值
????? o 遠端資料庫:
????? "Driver={mySQL};Server=data.domain.com;Port=3306;Option=131072;Stmt=;Database=my-database;Uid=username;Pwd=password;"
????? Option值 取值的含義
????? 1 客戶端不能處理MyODBC返回一列真實寬度的情況
????? 2 客戶端不能處理MySQL返回影響的行的真實值的情況如果設定此標誌,MySQL返回’found rows’。 MySQL 3.21.14或更新版才能生效
????? 4 在c:/myodbc.log中生成一個除錯日誌。這與在`AUTOEXEC.BAT'中的設定MYSQL_DEBUG=d:t:O,c::/myodbc.log相同
????? 8 對於結果和引數不設定任何包限制
????? 16 不使驅動器彈出問題
????? 32 使用或去除動態遊標支援。這在MyODBC 2.50中是不允許的
????? 64 在'database.table.column'中忽略資料庫名字的使用
????? 128 強制使用ODBC管理器遊標
????? 256 去除擴充套件取值(fetch)的使用
????? 512 充滿char欄位滿長度
????? 1024 SQLDescribeCol()函式返回完全滿足條件的列名
????? 2048 使用壓縮的伺服器/客戶端協議
????? 4096 告訴伺服器在函式後和'('前忽略空格 (PowerBuilder需要)。這將產生所有函式名關鍵詞
????? 8192 使用命名管道連線執行在NT上的Mysqld伺服器
????? 16384 將LONGLONG列改為INTl列(有些應用不能處理LONGLONG列)
????? 32768 從SQLTables中返回’user’作為Table_qualifier和Table_owner
????? 66536 從客戶端讀引數,從`my.cnf'讀ODBC群
????? 131072 增加一些額外的安全性檢查
????? 如果你需要許多選項,你應該把以上標誌相加。
????? · OLE DB, OleDbConnection (.NET)
????? o 標準連線:
????? "Provider=MySQLProv;Data Source=mydb;User Id=UserName;Password=asdasd;"
????? Data Source是MySQL資料庫的名字,也可以使用server=localhost;DB=test
????? · MySqlConnection (.NET)
????? o eInfoDesigns.dbProvider:
????? "Data Source=server;Database=mydb;User ID=username;Password=pwd;Command Logging=false"
????? 只適用於 eInfoDesigns dbProvider, 附加到 .NET
????? o MySqlConnection的宣告:
????? C#:
????? using eInfoDesigns.dbProvider.MySqlClient;
????? MySqlConnection MySqlConn = new MySqlConnection();
????? MySqlConn.ConnectionString = "my connectionstring";
????? MySqlConn.Open();
?????
????? VB.NET:
????? Imports eInfoDesigns.dbProvider.MySqlClient
????? Dim MySqlConn As MySqlConnection = New MySqlConnection()
????? MySqlConn.ConnectionString = "my connectionstring"
????? MySqlConn.Open()
????? · Interbase
????? · ODBC, Easysoft
????? o 本地計算機:
????? "Driver={Easysoft IB6 ODBC};Server=localhost;Database=localhost:C:/mydatabase.gdb;Uid=username;Pwd=password"
????? o 遠端計算機:
????? "Driver={Easysoft IB6 ODBC};Server=ComputerName;Database=ComputerName:C:/mydatabase.gdb;Uid=username;Pwd=password"
????? · ODBC, Intersolv
????? o 本地計算機:
????? "Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};Server=localhost;Database=localhost:C:/mydatabase.gdb;Uid=username;Pwd=password"
????? o 遠端計算機:
????? "Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};Server=ComputerName;Database=ComputerName:C:/mydatabase.gdb;Uid=username;Pwd=password"
????? 這個驅動器現在由 DataDirect Technologies來提供 (以前由Intersolv提供)
????? · OLE DB, SIBPROvider
????? o 標準連線:
????? "provider=sibprovider;location=localhost:;data source=c:/databases/gdbs/mygdb.gdb;user id=SYSDBA;password=masterkey"
????? o 指定字符集:
????? "provider=sibprovider;location=localhost:;data source=c:/databases/gdbs/mygdb.gdb;user id=SYSDBA;password=masterkey;character set=ISO8859_1"
????? o 指定角色:
????? "provider=sibprovider;location=localhost:;data source=c:/databases/gdbs/mygdb.gdb;user id=SYSDBA;password=masterkey;role=DIGITADORES"
????? · 需要了解更多請連結到Interbase的如下Borland開發者網路文章http://community.borland.com/article/0,1410,27152,00.html
????? · IBM DB2
????? · OLE DB, OleDbConnection (.NET) from ms
????? o TCP/IP:
????? "Provider=DB2OLEDB;Network Transport Library=TCPIP;Network Address=XXX.XXX.XXX.XXX;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=MyUser;Password=MyPW"
????? o APPC:
????? "Provider=DB2OLEDB;APPC Local LU Alias=MyAlias;APPC Remote LU Alias=MyRemote;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=MyUser;Password=MyPW"
????? AS400
????? · ODBC
????? " Driver={Client Access ODBC Driver (32-bit)};System=myAS400;Uid=myUsername;Pwd=myPassword"
????? · OLE DB, OleDbConnection (.NET)
????? "Provider=IBMDA400;Data source=myAS400;User Id=myUsername;Password=myPassword;"
????? · Sybase
????? · ODBC
????? o Sybase System 12 (或 12.5) Enterprise Open Client標準連線:
????? "Driver={SYBASE ASE ODBC Driver};Srvr=Aron1;Uid=username;Pwd=password"
????? o Sybase System 11標準連線:
????? "Driver={SYBASE SYSTEM 11};Srvr=Aron1;Uid=username;Pwd=password;"
????? o Intersolv 3.10:
????? "Driver={INTERSOLV 3.10 32-BIT Sybase};Srvr=Aron1;Uid=username;Pwd=password;"
????? o Sybase SQL Anywhere (以前為Watcom SQL ODBC driver):
????? "ODBC; Driver=Sybase SQL Anywhere 5.0; DefaultDir=c:/dbfolder/;Dbf=c:/mydatabase.db;Uid=username;Pwd=password;Dsn="""""
????? 注意: 對於在末尾緊跟著DSN 引數被引用的雙引號(VB語法), 你必須改變符合你所使用的語言所指定的引用符號語法。DSN引數為空實際上非常重要,如果不包括的話將導致7778錯誤。
????? · OLE DB
????? o Adaptive Server Anywhere (ASA):
????? "Provider=ASAProv;Data source=myASA"
????? o Adaptive Server Enterprise (ASE)(帶資料來源為.IDS檔案):
????? "Provider=Sybase ASE OLE DB Provider; Data source=myASE"
????? 注意你必須使用資料管理器來建立一個資料來源.IDS檔案.這些.IDS 檔案類似於ODBC DSNs.
????? Visual FoxPro(dBASE)
????? · ODBC
????? o dBASE:
????? " Driver={Microsoft dBASE Driver (*.dbf)}; DriverID=277;Dbq=c://DatabasePath"
????? 注意在書寫sql語句時必須指定檔名(如“Select Name, Address From Clients.dbf”).
????? o Visual Foxpro(有資料庫容器):
????? " Driver={Microsoft Visual Foxpro Driver};UID=; SourceType=DBC;SourceDB=C://DatabasePath//MyDatabase.dbc;Exclusive=No "
????? o Visual Foxpro(無資料庫容器):
????? " Driver={Microsoft Visual Foxpro Driver};UID=; SourceType=DBF;SourceDB=C://DatabasePath//MyDatabase.dbc;Exclusive=No"
????? · OLE DB, OleDbConnection (.NET)
????? o 標準連線:
????? "Provider=vfpoledb;Data Source=C://DatabasePath//MyDatabase.dbc;"
????? Excel
????? · ODBC
????? o 標準連線(Standard Security):
????? " Driver={Microsoft Excel Driver (*.xls)};DriverId=790; Dbq =C://DatabasePath//DBSpreadSheet.xls;DefaultDir=c://databasepath;"
????? · OLE DB Provider for Microsoft Jet
????? o 標準連線(Standard Security):
????? "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C://DatabasePath//DBSpreadSheet.xls;Extended Properties=/"/"Excel 8.0;HDR=Yes;/"/";"
????? 注意:如果"HDR=Yes",那麼提供者不會在記錄集中包括選擇的第一行,如果,那麼提供者將在記錄集中包括單元範圍(或已經命名範圍)的第一行
????? Text
????? · ODBC
????? o 標準連線(Standard Security):
????? " Driver={Microsoft Text Driver (*.txt; *.csv)}; Dbq=C://DatabasePath//;Extensions=asc,csv,tab,txt;"
????? 如果文字檔案使用tab作為分隔符,你必須建立schema.ini檔案,你必須在連線串中使用Format=TabDelimited選項。
????? 注意:你必須在sql語句中指定檔名(例如"Select Name, Address From Clients.csv")
????? · OLE DB Provider for Microsoft Jet
????? o 標準連線(Standard Security):
????? "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C://DatabasePath//;Extended Properties=/"/"text;"HDR=Yes;FMT=Delimited;/"/";"
????? 注意在書寫sql語句時必須指定檔名(如“Select Name, Address From Clients.txt”).
????? ODBC DSN
????? " DSN=MyDSN;Uid=MyUsername;Pwd=MyPassword;"
????? OLE DB Provider for ODBC Databases
????? 連線Access:
????? "Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb)};Dbq=c://DatabasePath//MyDatabase.mdb;Uid=MyUsername;Pwd=MyPassword;"
????? 連線SQL Server:
????? "Provider=MSDASQL;Driver={SQL Server};Server=MyServerName;Database=MyDatabaseName;Uid=MyUsername;Pwd=MyPassword;"
????? 使用DSN進行連線:
????? "Provider=MSDASQL;PersistSecurityInfo=False;Trusted_Connection=Yes;Data Source=MyDSN;catalog=MyDatabase;"
????? OLE DB Provider for OLAP
????? "Provider=MSOLAP;Data Source=MyOLAPServerName;Initial Catalog=MyOLAPDatabaseName;"
????? 通過http連線:
????? 這個特徵允許客戶端應用程式通過在客戶端應用程式連線字串的Data Source引數中指定一個URL並使用IIS連線到一個分析伺服器。這種連線方法允許PivotTable服務通過防火牆或者代理伺服器連線到分析伺服器。一個特殊的ASP頁面Msolap.asp通過IIS進行連線。當連線到伺服器時,這個檔案一定在這個目錄中並且作為URL的一部分(例如http://www.myserver.com/myolap/)。
????? 使用url連線:
????? "Provider=MSOLAP;Data Source=http://MyOLAPServerName/;Initial Catalog=MyOLAPDatabaseName;"
????? 使用ssl連線:
????? "Provider=MSOLAP;Data Source=https://MyOLAPServerName/;Initial Catalog=MyOLAPDatabaseName;"
????? OLE DB Provider for Active Directory
????? "Provider=ADSDSOObject;User Id=myUsername;Password=myPassword;"
????? OLE DB Provider for Index Server
????? "provider=msidxs;Data Source=MyCatalog;"
????? OLE DB Data Link Connections
????? "File Name=c://DataBasePath//DatabaseName.udl;"
????? Outlook 2000 personal mail box
????? "Provider=Microsoft.Jet.OLEDB.4.0;Outlook 9.0;MAPILEVEL=;DATABASE=C://Temp//;"
????? 使用任何臨時資料夾代替c:/temp。這將在那個資料夾建立一個模式檔案,當你開啟它時,它會顯示可以得到的所有欄位。空的mapilevel表明最高層的資料夾。
????? Exchange mail box
????? "Provider=Microsoft.Jet.OLEDB.4.0;Exchange 4.0;MAPILEVEL=Mailbox - Pat Smith|;DATABASE=C://Temp//;"
????? 使用任何臨時資料夾代替c:/temp.
????? 注意:你能象資料庫一樣對mail store輸入查詢
????? 舉例:"SQL "SELECT Contacts.* FROM Contacts;"

相關文章