1. 程式人生 > >C# 連接SQL Server數據庫的幾種方式--server+data source等方式

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

如何使用 sel 特定 html 項目 true -- 計算機 技術分享

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

如何使用Connection對象連接數據庫?

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

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