C#串連SQL Server資料庫

來源:互聯網
上載者:User

C#串連SQL Server資料庫

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

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

SqlConnection類的對象串連SQL Server資料庫;OracleConnection 類的對象串連Oracle資料庫;OleDbConnection類的對象串連支援OLE DB的資料庫,如Access;而OdbcConnection類的對象串連任何支援ODBC的資料庫。與資料庫的所有通訊最終都是通過Connection對象來完成的。
 (1)用SqlConnection串連SQL Server

加入命名空間:using System.Data.SqlClient;

串連資料庫: string conString = "data source=IP地址; Database=資料庫名;user id=使用者名稱; password=密碼";

                          SqlConnection myconnection = new SqlConnection(conString);

                          myconnection.open();

(2)用OracleConnection串連Oracle

加入命名空間:using System.Data.OracleClient;

串連資料庫: string conString = "data source=IP地址; Database=資料庫名;user id=使用者名稱; password=密碼";

                          OracleConnection myconnection = new OracleConnection(conString);

                          myconnection.open();

(3)用 MySqlConnection串連MySQL

在.NET中串連MySQL資料庫有兩種方法:MySQL Connector/ODBC 和 MySQL Connector/NET,ODBC連接器是符合ODBC標準的互動平台,是.NET訪問MySQL資料庫最好的選擇。

首先,需要下載安裝MySql-connector-net-5.1.5.Data.msi這個組件。如果是預設安裝,則可以在C:\Program Files\MySQL\MySQL Connector Net 5.1.5\Binaries\.NET2.0中找到MySql.Data.dll,將該檔案複製到項目的bin目錄下。並且在項目中添加引用MySql.Data.dll。實現代碼如下:

加入命名空間:using MySql.Data.MySqlClient;

串連資料庫: string conString = "server=IP地址; Database=資料庫名;user id=使用者名稱; password=密碼";

                          MySqlConnection myconnection = new MySqlConnection(conString);

                          myconnection.open();

(4)用OleDbConnection串連各種資料來源

由於資料來源不同,相應的連接字串也會不同。

加入命名空間:using System.Data.OleDb;

串連 SQL Server:  string conString = "Provider=SQLOLEDB.1; Persist Security Info=False; user id=使用者名稱; Database=資料庫名; data source=COMPUTER; ";

                                    OleDbConnection myconnection = new OleDbConnection(conString);

                                    myconnection.open();

串連 Access:  string conString = "Provider=Microsoft.Jet.OLEDB.4.0;  data source=C:\\Database1.mdb; Persist Security Info=False;";

                                    OleDbConnection myconnection = new OleDbConnection(conString);

                                    myconnection.open();

(也可以通過建立.udl檔案來獲得字串)

串連 Oracle:  string conString = "Provider=MSDAORA;  user id=使用者名稱; password=密碼; data source=db; Persist Security Info=False;";

                                    OleDbConnection myconnection = new OleDbConnection(conString);

                                    myconnection.open();

(也可以通過OracleConnection串連) 

注意:使用不同的Connection對象需要匯入不同的命名空間。OleDbConnection的命名空間為System.Data.OleDb。SqlConnection的命名空間為System.Data.SqlClient。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驗證與SQL Server驗證的資料庫聯結字串是不同的。

本文永久更新連結地址:

相關文章

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.