數據庫連接大全

---------------數據庫連接字符串的加密與解密---------------
ASP.NET web.config中,數據庫連接字符串的加密與解密。
方法:開始--->運行,輸入cmd,接着輸入以下內容
加密:
C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe -pef "connectionStrings" "你的Web項目路徑"
解密:
C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe -pdf "connectionStrings" "你的Web項目路徑"
.NET爲版本的路徑自行修改,其中connectionStrings連接字符串的名稱。
需要注意的是,加密過程中使用了一個基於本機的密鑰,這意味着解密過程必須在同一臺計算機上完成。如果是將加密後的Web.config文件移動到其它計算機上,那麼Web.config文件中的連接字符串將不能夠正常解密。
 -----------------------------------------------------------------------------------------------------------------------------------------
ASP.net2.0提供了簡便的加密方法,即使用aspnet_iis.exe命令,該命令位置如下:
C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727
注意,具體情況視系統位置及版本號有所差異
在命令模式下進入該目錄即可運行,完整命令爲:
aspnet_iis -pef "connectionStrings" "Web.cofing絕對路徑(注:不需要輸入web.config)"
如果正常會提示“成功”,此時打開Web.config會發現字符串已加密
解密命令爲:
aspnet_iis -pdf "connectionStrings" "Web.cofing絕對路徑(注:不需要輸入web.config)"
注意的是加密、解密必須在一臺機器上完成。
--------------連接串加密解密---------------
下面顯示的是通過代碼方式對數據庫連接字符串加密,代碼如下:
 
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection configSection = config.GetSection("connectionStrings");
if (configSection.SectionInformation.IsProtected)
...{//如果已經加密,就不用再加密了
configSection.SectionInformation.UnprotectSection();
config.Save();
}
else {
configSection.SectionInformation.ProtectSection ("DataProtectionConfigurationProvider");
config.Save();
}
 
ASP.NET中web.config中加密連接字符串
        舊版本的ASP.NET將連接字符串直接保存在ASPX頁面中。回想一下,連接字符串包含了數據服務器名稱和用戶賬戶等信息,有時候甚至還包含了密碼。在代碼中包含以上信息是非常不好的習慣,原因有二。首先,這些信息可以被設計小組中的每一位程序人員看到(但是站點訪問者不能在瀏覽器上看到)。第二,在整個Web站點中的每一個擁有該連接的地方,都必須進行維護和更新。更新密碼成爲了一項繁重的工作。
       ASP.NET 2.0提供了一個選項可以將連接字符串移動至Web.config文件的連接區域,給字符串一個名稱並將其加密。然後ASP.NET 2.0頁面就通過這個名稱來引用連接字符串。保存連接字符串至Web.config的步驟並不複雜。打開位於站點根目錄下的Web.config文件。找到被界定的區域(如果不存在,可自行添加)並在標記中輸入如下代碼。該標記有三個屬性:name、connectionString和providerName。屬性name就是將會在頁面中使用的連接字符串的普通名稱。connectionString屬性應當設置爲連接至數據庫的完整的連接字符串,如前所述。
e.g.
http://schemas.microsoft.com/.NetConfiguration/v2.0">
 
     providerName="System.Data.SqlClient" />
     providerName="System.Data.SqlClient" />
     providerName="System.Data.SqlClient" />
     providerName="System.Data.SqlClient" />
     providerName="System.Data.SqlClient" />
 
通過使用命令,可以將Web.config文件的連接字符串區域加密。當ASPX頁面請求連接字符串時,將由ASP.NET自動對信息進行解密。加密必須由以下命令行來執行。依次單擊Start/Run/cmd並切換至C:/WINDOWS/ Microsoft.net/ Framework/ v2.0.xxxx,其中xxxx是您的軟件版本。如果C:/Websites/BegAspNet2Db是站點根目錄的話,即可輸入如下命令行:
aspnet_regiis –pef connectionStrings C:/Websites/BegAspNet2Db
加密連接字符串的命令行工具還可以使用虛擬路徑語法(在IIS元數據庫中的路徑),而無需指定Web.config文件的完全限定路徑,如下所示:
aspnet_regiis –pe connectionStrings –app /BegAspNet2Db
 
一旦執行完了加密過程,就可以打開Web.config文件,但是連接字符串已經被混淆。當ASP.NET需要,連接字符串即可自動解密,或者如果需要進行一些更改,例如修改密碼,則可以手動輸入以下代碼來解密。
aspnet_regiis –pdf connectionStrings c:/Websites/BegAspNet2Db
 
請注意,在默認情況下,加密過程使用了一個基於加密算法執行的機器的鍵。解密過程(無論手動還是在處理頁面過程中)必須發生在與加密相同的機器上。例如,作爲XCOPY部署的一部分,移動Web.config至另外一臺機器將會導致Web.config無法解密,所以推薦在部署Web站點至最終機器之後,再將連接字符串進行加密。
--------------OLE DB Provider Microsoft Jet oledb連接字符串格式介紹-----------
做網站的朋友經連見到用Microsoft.Jet.Oledb.4.0連接Access數據庫的情況。那這個連接方式都有哪些參數可供我們設置呢?我們應該如何優化呢?下面我是我找到的關於這個連接方式的介紹。
OLE DB Provider for Microsoft Jet 允許 ADO 訪問 Microsoft Jet 數據庫。
連接字符串參數
要連接此提供者(Provider),請將 ConnectionString 屬性的 Provider 參數設置爲:
Microsoft.Jet.OLEDB.4.0
讀取 Provider 屬性也將返回此字符串。
典型連接字符串
此提供者的典型連接字符串是:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassword;"
它包含下列關鍵字:
 
關鍵字 說明
Provider 指定 OLE DB Provider for Microsoft Jet。
Data Source 指定數據庫路徑和文件名(例如,c:/Northwind.mdb)。
User ID 指定用戶名稱。如果未指定此關鍵字,則默認使用字符串 "admin"。
Password 指定用戶密碼。如果未指定此關鍵字,則默認使用空字符串 ("")。
提供者特有的連接參數
除了 ADO 定義的動態屬性外,OLE DB Provider for Microsoft Jet 還支持幾個提供者特有的動態屬性。象所有其他 Connection 參數一樣,可以通過 Connection 對象的 Properties 集合或作爲連接字符串的一部分來設置這些參數。
 
下表列出了這些屬性,括號中爲相應的 OLE DB 屬性名稱。
 
參數 說明
省略
提供者特有的 Recordset 和 Command 屬性
 
默認情況下,OLE DB Provider for Microsoft Jet 以讀/寫模式打開 Microsoft Jet 數據庫。要以只讀模式打開數據庫,請把 ADO Connection 對象的 Mode 屬性設置爲 adModeRead。
 
Command 對象的用法
Command 對象中的命令文本使用 Microsoft Jet SQL 方言。可以在命令文本中指定行返回查詢、操作查詢和表名,但存儲過程將不受支持也不能指定。
Recordset 行爲
 
Microsoft Jet 數據庫引擎不支持動態遊標。因此,OLE DB Provider for Microsoft Jet 不支持 adLockDynamic 遊標類型。請求動態遊標時,提供者將返回一個鍵集遊標並重置 CursorType 屬性以指示返回的 Recordset 的類型。另外,如果請求可更新的 Recordset(LockType 爲 adLockOptimistic、adLockBatchOptimistic 或 adLockPessimistic),提供者也將返回一個鍵集遊標並重置 CursorType 屬性。
動態屬性
 
OLE DB Provider for Microsoft Jet 向未打開的 Connection、Recordset 和 Command 對象的 Properties 集合中插入了多個動態屬性。
 
下表是每個動態屬性的 ADO 和 OLE DB 名稱的交*索引。OLE DB Programmer's Reference 使用“Description”項引用 ADO 屬性名稱。有關這些屬性的詳細信息,請參閱 OLE DB Programmer's Reference。請在“索引”中搜索 OLE DB 屬性名稱或參閱 Appendix C:OLE DB Properties。
 
Connection 動態屬性
 
下列屬性被添加到 Connection 對象的 Properties 集合中。
 
ADO 屬性名稱 OLE DB 屬性名稱
省略
 
Recordset 動態屬性
 
 
下列屬性被添加到 Recordset 對象的 Properties 集合中。
 
Command 動態屬性
 
下列屬性被添加到 Command 對象的 Properties 集合中。
 
ADO 屬性名稱 OLE DB 屬性名稱
省略
請參閱   有關 OLE DB Provider for Microsoft Jet 的特定實現和功能的詳細信息,請參閱 MDAC SDK 中的 OLE DB Provider for Microsoft Jet 文檔。
-----------------Access 2007連接字符串總結------------------
ACE OLEDB 12.0連接方式
 
 標準安全連接 以下是語法格式:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/myFolder/myAccess2007file.accdb;Persist Security Info=False;
 帶數據庫密碼的連接
     這個語句適用於連接你在Access2007中通過“設置數據庫密碼”功能保護的數據庫。
以下是語法格式:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/myFolder/myAccess2007file.accdb;Jet OLEDB:Database Password=MyDbPassword;
DataDirectory functionality 以下是語法格式:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/myAccess2007file.accdb;Persist Security Info=False;
---------------------Excel 2007連接字符串總結-------------------
ACE OLEDB 12.0連接方式
Xlsx文件
    這是用來連接帶Xlsx擴展名的Excel 2007文件。這是不帶宏的Office Open XML格式。
以下是語法格式:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/myFolder/myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";
   "HDR=yes;"是說第一行是列名而不是數據。"HDR=No;"正好與前面的相反。
把數據當做文本對待
   使用這條連接當你想把所有的數據都當做文本對待時,覆蓋Excel通常的猜測這列的數據類型。 以下是語法格式:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/myFolder/myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
   如果你想把列名也讀到結果集中(使用“HDR=NO”儘管第一行是列名)並且列中的數據是數值型的,使用“IMEX=1”可必免衝突。
  使用"IMEX=1"檢索混合數據列是一種安全的方法。試想一下,當Driver檢索出數據列中有一種數據類型的excel文件可以正常工作,而另一個excel文件(某列)被檢測出兩種類型,這會造成你的程序的衝突。
 
Xlsb文件
  這是用來連接帶Xlsb擴展名的Excel 2007文件。這是一種保存爲二進制的Office Open XML格式。 不像Xlsx文件那種可讀的文件格式。此種格式在數據量大時可以提升性能。 以下是語法格式:
 
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/myFolder/myBinaryExcel2007file.xlsb;Extended Properties="Excel 12.0;HDR=YES";
 
   "HDR=yes;"是說第一行是列名而不是數據。"HDR=No;"正好與前面的相反。
 
Xlsm文件
   這是用來連接帶Xlsm擴展名的Excel 2007文件。這是帶宏的Office Open XML格式。 以下是語法格式:
 
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:/myFolder/myExcel2007file.xlsm;Extended Properties="Excel 12.0 Macro;HDR=YES";
 
   注意:字符串中的引號"要用你的程序的語言的轉義語法轉義一下。
   在C#,C++中爲 /" ,   VB,VBScript爲 ""
   XML(Web.config etc) " , 或者可以使用單引號。
 
---------------------Oracle連接字符串總結----------------------Oracle XE
    標準連接
        Oracle XE(或者"Oracle Database 10g Express Edition")是一個簡單免費發佈的版本。 以下是語法格式:
Driver=(Oracle in XEClient);dbq=111.21.31.99:1521/XE;Uid=myUsername;Pwd=myPassword;
ODBC
    新版本連接方式 以下是語法格式:
Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword;
    老版本連接方式 以下是語法格式:
Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;
OLE DB, OleDbConnection (.NET)
    標準安全連接
        此連接方式使用來自微軟的Provider。 以下是語法格式:
Provider=msdaora;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;
    信任連接 以下是語法格式:
Provider=msdaora;Data Source=MyOracleDB;Persist Security Info=False;Integrated Security=Yes;
    標準安全連接
        此連接方式使用來自Oracle的Provider。 以下是語法格式:
Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;
          信任連接 以下是語法格式:
Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;
      TNS-less 連接字符串
以下是語法格式:
Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=myPort)))(CONNECT_DATA=(SID=MyOracleSID)(SERVER=DEDICATED)));User Id=myUsername;Password=myPassword;
Oracle.DataAccess.Client.OracleConnection
       標準連接
以下是語法格式:
Data Source=TORCL;User Id=myUsername;Password=myPassword;
       帶integrated security的連接
以下是語法格式:
Data Source=TORCL;Integrated Security=SSPI;
       帶 ODP.NET 不帶 tnsnames.ora的連接
以下是語法格式:
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;
OracleConnection, Oracle Data Provider, ODP.NET, System.Data.OracleClient.OracleConnection
       標準連接
以下是語法格式:
Data Source=MyOracleDB;Integrated Security=yes
               僅在Oracle8i release 3 或更高版本
      指明用戶密與密碼的連接
以下是語法格式:
Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;Integrated Security=no;
               This one works only with Oracle 8i release 3 or later
      省略tnsnames.ora
這是另一種連接方式不依賴你的DNS.You create a connection string based on the format used in the tnsnames.ora file without the need to actually have one of these files on the client pc.
以下是語法格式:
SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;
               Some reported problems with the one above and Visual Studio. Use the next one if you've encountered problems.
以下是語法格式:
 
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;
         使用連接池
  連接池服務如果找不到一個完全匹配連接字符串的連接,他將會創建一個。如果能找到該連接,將會重新使用。
以下是語法格式:
Data Source=myOracleDB;User Id=myUsername;Password=myPassword;Min Pool Size=10;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5;Decr Pool Size=2;
         Windows驗證
以下是語法格式:
Data Source=myOracleDB;User Id=/;
         特權連接
            使用SYSOPER的特權
 
以下是語法格式:
Data Source=myOracleDB;User Id=SYS;Password=SYS;DBA Privilege=SYSOPER;
         利用密碼終止函數
   當第一次打開連接時,當打開鏈接後,一個密碼過期錯誤被拋出,捕獲這個錯誤並執行OpenWithNewPassword命令行設置新密碼。
以下是語法格式:
Data Source=myOracleDB;User Id=myUsername;Password=myPassword;
 
oConn.OpenWithNewPassword(sTheNewPassword); 
       代理驗證
以下是語法格式:
Data Source=myOracleDB;User Id=myUsername;Password=myPassword;Proxy User Id=pUserId;Proxy Password=pPassword;
Core Labs OraDirect (.NET)
       標準連接 以下是語法格式:
User ID=myUsername;Password=myPassword;Host=ora;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;
Data Shape
    MS Data Shape
以下是語法格式:
Provider=MSDataShape.1;Persist Security Info=False;Data Provider=MSDAORA;Data Source=orac;User Id=myUsername;Password=myPassword;
-------------NET SQL Server連接字符串句法 連接池設置--------------
NET SQL Server連接字符串句法
數據庫的連接性已經發展成爲應用程序開發的一個標準方面。數據庫連接字符串現在已經成爲每個項目的標準必備條件。我發現自己爲了找到所需要的句法,經常要從另外一個應用程序中複製連接字符串或者進行一次搜索。這個在與SQL Server交互操作時更是如此,因爲它有太多的連接字符串選項。現在就讓我們來研究一下連接字符串的衆多方面。
連接字符串
 
在對象實例化或者建立期間,數據庫連接字符串通過屬性或方法被傳遞到必要的對象。連接字符串的格式是一個以分號爲界,劃分鍵/值參數對的列表。列表A中包括了一個C#中的例子,說明了怎樣用創建SqlConnection對象的方法連接到SQL Server(實際的連接字符串是通過對象的ConnectionString屬性分配的)。列表B中包括的是VB.NET的版本。
列表A
string cString = "Data Source=server;Initial Catalog=db;User ID=test;Password=test;";
SqlConnectionconn = new SqlConnection();
conn.ConnectionString = cString;
conn.Open();
列表B
Dim cString As String
cString = "Data Source=server;Initial Catalog=db;User ID=test;Password=test;"
Dim conn As SqlConnection = New SqlConnection()
conn.ConnectionString = cString
conn.Open()
連接字符串會指定數據庫服務器和數據庫,以及訪問數據庫必需的用戶名和密碼。但是這種格式並不是對所有數據庫交互都適用,它的確有許多可用的選項,其中很多選項都有同義詞。
 
和Data Source(數據源)、Initial Catalog(初始編目)、User ID(用戶ID)、和Password(密碼)等元素一起,下面這些選項都是可用的:
 
Application Name(應用程序名稱):應用程序的名稱。如果沒有被指定的話,它的值爲.NET SqlClient Data Provider(數據提供程序).
AttachDBFilename/extended properties(擴展屬性)/Initial File Name(初始文件名):可連接數據庫的主要文件的名稱,包括完整路徑名稱。數據庫名稱必須用關鍵字數據庫指定。
Connect Timeout(連接超時)/Connection Timeout(連接超時):一個到服務器的連接在終止之前等待的時間長度(以秒計),缺省值爲15。
Connection Lifetime(連接生存時間):當一個連接被返回到連接池時,它的創建時間會與當前時間進行對比。如果這個時間跨度超過了連接的有效期的話,連接就被取消。其缺省值爲0。
Connection Reset(連接重置):表示一個連接在從連接池中被移除時是否被重置。一個僞的有效在獲得一個連接的時候就無需再進行一個額外的服務器來回運作,其缺省值爲真。
Current Language(當前語言):SQL Server語言記錄的名稱。
Data Source(數據源)/Server(服務器)/Address(地址)/Addr(地址)/Network Address(網絡地址):SQL Server實例的名稱或網絡地址。
Encrypt(加密):當值爲真時,如果服務器安裝了授權證書,SQL Server就會對所有在客戶和服務器之間傳輸的數據使用SSL加密。被接受的值有true(真)、false(僞)、yes(是)和no(否)。
Enlist(登記):表示連接池程序是否會自動登記創建線程的當前事務語境中的連接,其缺省值爲真。
Database(數據庫)/Initial Catalog(初始編目):數據庫的名稱。
Integrated Security(集成安全)/Trusted Connection(受信連接):表示Windows認證是否被用來連接數據庫。它可以被設置成真、僞或者是和真對等的sspi,其缺省值爲僞。
Max Pool Size(連接池的最大容量):連接池允許的連接數的最大值,其缺省值爲100。
Min Pool Size(連接池的最小容量):連接池允許的連接數的最小值,其缺省值爲0。
Network Library(網絡庫)/Net(網絡):用來建立到一個SQL Server實例的連接的網絡庫。支持的值包括: dbnmpntw (Named Pipes)、dbmsrpcn (Multiprotocol/RPC)、dbmsvinn(Banyan Vines)、dbmsspxn (IPX/SPX)和dbmssocn (TCP/IP)。協議的動態鏈接庫必須被安裝到適當的連接,其缺省值爲TCP/IP。
Packet Size(數據包大小):用來和數據庫通信的網絡數據包的大小。其缺省值爲8192。
Password(密碼)/Pwd:與帳戶名相對應的密碼。
Persist Security Info(保持安全信息):用來確定一旦連接建立了以後安全信息是否可用。如果值爲真的話,說明像用戶名和密碼這樣對安全性比較敏感的數據可用,而如果值爲僞則不可用。重置連接字符串將重新配置包括密碼在內的所有連接字符串的值。其缺省值爲僞。
Pooling(池):確定是否使用連接池。如果值爲真的話,連接就要從適當的連接池中獲得,或者,如果需要的話,連接將被創建,然後被加入合適的連接池中。其缺省值爲真。
User ID(用戶ID):用來登陸數據庫的帳戶名。
Workstation ID(工作站ID):連接到SQL Server的工作站的名稱。其缺省值爲本地計算機的名稱。
下面的連接字符串用一個受信連接和指定的登陸證書(不及管理員密碼空缺安全),在TestDev1服務器上與Northwind數據庫建立連接:
 
Server=TestDev1;Database=Northwind;User ID=sa;
Password=;Trusted_Connection=True;
 
下一個連接字符串使用了TCIP/IP 和一個指定的IP地址:
 
Data Source=192.162.1.100,1433;Network Library=DBMSSOCN;
Initial Catalog=Northwind;User ID=sa;Password=;
 
所使用的選項可以很容易地包括在連接字符串中,但是它們還是取決於你的應用程序和它的要求。知道什麼是可用的是很有好處的,這樣你就可以恰當地使用它。
 
使用ADO.NET 2.0
 
ADO.NET 2.0爲每一個.NET框架的數據提供程序引進了新的連接字符串生成器。關鍵詞作爲屬性被列出,使得連接字符串句法在提交到數據源之前就生效。也還有新的類可以使連接字符串在配置文件中的存儲和檢索變得簡單,並且用受保護的方式將它們加密。
 
或多或少,正是你需要的。
 
通過.NET應用程序連接到SQL Server爲特定的連接參數和其他選項提供了多種選擇。它可以像指定數據庫、服務器和登錄憑據那樣簡單,也可能像設置緩衝連接池和安全選項一樣複雜。ADO.NET 2.0的確通過數據庫類使得連接字符串選項具有了更大的靈活性。你只需使用應用程序所需要的選項,不必理會其他的。而且,如果你發現自己身陷困境,記不得連接字符串句法了,可以查閱以下網址ConnectionStrings.com。
 
-------------------------
 
 
 
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/huwei2003/archive/2009/10/27/4733589.aspx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章