C# 連接SQL Server數據庫的幾種方式--server+data source等方式

<span style="font-family: Arial; background-color: rgb(255, 255, 255);">如何使用Connection對象連接數據庫?</span>

對於不同的.NET數據提供者,ADO.NET採用不同的Connection對象連接數據庫。這些Connection對象爲我們屏蔽了具體的實現細節,並提供了一種統一的實現方法。

Connection類有四種:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。

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身份驗證進行數據庫的登錄。

1、集成的Windows身份驗證語法範例

string constr = "server=.;database=myschool;integrated security=SSPI";

說明:程序代碼中,設置了一個針對Sql Server數據庫的連接字符串。其中server表示運行Sql Server的計算機名,由於程序和數據庫系統是位於同一臺計算機的,所以我們可以用.(或localhost)取代當前的計算機名。database表示所使用的數據庫名(myschool)。由於我們希望採用集成的Windows驗證方式,所以設置 integrated security爲SSPI即可。

2、Sql Server 2005中的Windows身份驗證模式如下:

string constr = "server=.;database=myschool;uid=sa;pwd=sa";

說明:程序代碼中,採用了使用已知的用戶名和密碼驗證進行數據庫的登錄。數據庫連接字符串是不區分大小寫的。uid爲指定的數據庫用戶名,pwd爲指定的用戶口令。爲了安全起見,一般不要在代碼中包括用戶名和口令,你可以採用前面的集成的Windows驗證方式或者對Web.Config文件中的連接字符串加密的方式提高程序的安全性。

3、Sql Server 2005中的Sql Server身份驗證模式如下:

string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";

說明:程序代碼中data source 表示運行數據庫對應的計算機名,initial catalog表示所使用的數據庫名。uid爲指定的數據庫用戶名,pwd爲指定的用戶口令。

4、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);
            }

5、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驗證的數據庫聯接字符串是不同的。

發佈了17 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章