C# 串連SQL Server資料庫的幾種方式–server+data source等方式

來源:互聯網
上載者:User

 

 如何使用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驗證的資料庫聯結字串是不同的。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.