如何使用Connection對象鏈接數據庫?html
對於不一樣的.NET數據提供者,ADO.NET採用不一樣的Connection對象鏈接數據庫。這些Connection對象爲咱們屏蔽了具體的實現細節,並提供了一種統一的實現方法。web
Connection類有四種:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。sql
SqlConnection類的對象鏈接SQL Server數據庫;OracleConnection 類的對象鏈接Oracle數據庫;OleDbConnection類的對象鏈接支持OLE DB的數據庫,如Access;而OdbcConnection類的對象鏈接任何支持ODBC的數據庫。與數據庫的全部通信最終都是經過Connection對象來完成的。數據庫
SqlConnection類安全
Connection 用於與數據庫「對話」,並由特定提供程序的類(如 SqlConnection)表示。儘管SqlConnection類是針對Sql Server的,可是這個類的許多屬性、方法與事件和OleDbConnection及OdbcConnection等類類似。服務器
注意:使用不一樣的Connection對象須要導入不一樣的命名空間。OleDbConnection的命名空間爲System.Data.OleDb。SqlConnection的命名空間爲System.Data.SqlClient。OdbcConnection的命名空間爲System.Data.Odbc。OracleConnection的命名空間爲System.Data.OracleClinet。網絡
咱們就可使用以下兩種方式鏈接數據庫,即採用集成的Windows驗證和使用Sql Server身份驗證進行數據庫的登陸。ide
一、集成的Windows身份驗證語法範例sqlserver
string constr = "server=.;database=myschool;integrated security=SSPI";post
說明:程序代碼中,設置了一個針對Sql Server數據庫的鏈接字符串。其中server表示運行Sql Server的計算機名,因爲程序和數據庫系統是位於同一臺計算機的,因此咱們能夠用.(或localhost)取代當前的計算機名。database表示所使用的數據庫名(myschool)。因爲咱們但願採用集成的Windows驗證方式,因此設置 integrated security爲SSPI便可。
二、Sql Server 2005中的Windows身份驗證模式以下:
string constr = "server=.;database=myschool;uid=sa;pwd=sa";
說明:程序代碼中,採用了使用已知的用戶名和密碼驗證進行數據庫的登陸。數據庫鏈接字符串是不區分大小寫的。uid爲指定的數據庫用戶名,pwd爲指定的用戶口令。爲了安全起見,通常不要在代碼中包括用戶名和口令,你能夠採用前面的集成的Windows驗證方式或者對Web.Config文件中的鏈接字符串加密的方式提升程序的安全性。
三、Sql Server 2005中的Sql Server身份驗證模式以下:
string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";
說明:程序代碼中data source 表示運行數據庫對應的計算機名,initial catalog表示所使用的數據庫名。uid爲指定的數據庫用戶名,pwd爲指定的用戶口令。
四、Access數據庫的鏈接字符串的形式以下:
string connectionString =@"provider=Microsoft.Jet.OLEDB.4.0;data source=c:\DataSource\myschool.mdb";
說明:程序代碼中,經過專門針對Access數據庫的OLE DB提供程序,實現數據庫的鏈接。這使用的的OLE DB提供程序爲Microsoft.Jet.OLEDB.4.0,而且數據庫存放在c:\DataSource目錄下,其數據庫文件爲myschool.mdb。
string constr = "server=.;database=myschool;integrated security=SSPI"; //string constr = "server=.;database=myschool;uid=sa;pwd=sa"; //string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa"; SqlConnection con = new SqlConnection(constr); // con.ConnectionString = constr; string sql = "select count(*) from grade"; SqlCommand com = new SqlCommand(sql,con); try { con.Open(); MessageBox.Show("成功鏈接數據庫"); int x = (int)com.ExecuteScalar(); MessageBox.Show(string.Format("成功讀取{0},條記錄", x)); } catch (Exception) { throw; } finally { con.Close(); MessageBox.Show("成功關閉數據庫鏈接", "提示信息", MessageBoxButtons.YesNoCancel); }
五、Web.config 配置
在ASP.NET 2.0中,使用了一種在運行時解析爲鏈接字符串值的新的聲明性表達式語法,按名稱引用數據庫鏈接字符串。鏈接字符串自己存儲在 Web.config 文件中的 <connectionStrings>配置節下面,以便易於在單個位置爲應用程序中的全部頁進行維護。
<?xml version="1.0"?> <configuration> <connectionStrings> <add name="myschool" connectionString="Server=localhost;Integrated Security=True;Database=myschool;Persist Security Info=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <pages styleSheetTheme="Default"/> </system.web> </configuration>
咱們也能夠用下面的方式從配置文件直接讀取數據庫鏈接字符串。首先咱們須要引用using System.Web.Configuration命名空間,該命名空間包含用於設置 ASP.NET 配置的類。string connectionString =ConfigurationManager.ConnectionStrings["myschool"].ConnectionString;
首先你應該區分Windows驗證與Sql自身的驗證的區別。
Windows驗證就是SqlServer服務器使用Windows自帶的驗證系統,若是你指定SqlServer內Windows的一個組有訪問的權限,那麼加入此組的Windows用戶都有訪問數據庫的權限。此驗證有個缺點,就是若是不是在域模式下,沒法加入遠程計算機的用戶,因此若是使用C/S方式寫程序的話,使用Windows驗證沒法使本地計算機的Windows賬戶訪問遠程數據庫服務器。
Sql驗證就簡單多了,就是使用sqlserver的企業管理器中本身定義由Sql控制的用戶,指定用戶權限等。這個賬戶信息是由SqlServer本身維護的,因此SqlServer更換計算機後信息不會丟失,不用從新設定。
因此若是你的項目使用在一個比較大的網絡中,並且對安全要求比較高,那麼應該創建域,使用Windows驗證,並且要與系統管理員配合詳細設定能夠訪問SqlServer的Windows賬戶。若是使用一個小網絡,並且此網絡僅用來使用項目,對安全沒有高要求,那麼使用SqlServer驗證,並且更新,升級等都方便。
Windows驗證與SqlServer驗證的數據庫聯接字符串是不一樣的。