ASP.NET 2.0中執(zhí)行數(shù)據(jù)庫(kù)操作命令之一_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

      推薦:.NET vs J2EE——面對(duì)SOA的荒謬與誤解
      ·.Net與J2EE在金融行業(yè)愈來(lái)愈呈勢(shì)均力敵之勢(shì),二者均宣稱提供了不同于對(duì)方的、聽(tīng)起來(lái)很迷人的個(gè)性化應(yīng)用服務(wù)。 ·理性的IT執(zhí)行官們已經(jīng)深刻的認(rèn)識(shí)到這樣的一個(gè)事實(shí):無(wú)論是.Net

      數(shù)據(jù)庫(kù)命令執(zhí)行時(shí)使用Command對(duì)象。Command類有三種:SqlCommand、OleDbCommand與OdbcCommand。

      Command對(duì)象主要用來(lái)運(yùn)行SELECT、INSERT、UPDATE或DELETE之類的SQL語(yǔ)句。Command對(duì)象還可以調(diào)用存儲(chǔ)過(guò)程或從特定表中取得記錄。

      DataReader對(duì)象主要是用來(lái)讀取數(shù)據(jù)結(jié)果,使用它讀取記錄時(shí)通常比從DataSet更快。DataReader類有三種:SqlDataReader、OleDbDataReader和OdbcDataReader。DataReader對(duì)象用Commmand對(duì)象從數(shù)據(jù)庫(kù)中讀取記錄,并且DataReader對(duì)象只能向前的讀取記錄,用于在某些情況下替代DataSet對(duì)象(DataSet對(duì)象可以存儲(chǔ)數(shù)據(jù)庫(kù)中的行拷貝,可以在切斷數(shù)據(jù)庫(kù)的連接時(shí)處理這個(gè)拷貝,我們將在以后的章節(jié)中詳細(xì)介紹該對(duì)象)。

      注意:不能用DataReader修改數(shù)據(jù)庫(kù)中的記錄,它是采用向前的,只讀的方式讀取數(shù)據(jù)庫(kù)。

      SqlCommand類

      SqlCommand對(duì)象用于對(duì)SQL Server數(shù)據(jù)庫(kù)執(zhí)行命令。OleDbCommand對(duì)象用于對(duì)支持OleDb的數(shù)據(jù)庫(kù)執(zhí)行命令,如Oracle與ACCESS。

      OdbcCommand對(duì)象用于對(duì)支持Odbc的數(shù)據(jù)庫(kù)執(zhí)行命令。盡管SqlCommand類是針對(duì)SQL Server的,但是這個(gè)類的許多屬性、方法與事件和

      OleDbCommand及OdbcCommand等類相似。本章將重點(diǎn)講解SqlCommand特定的屬性與方法,其他的Command類你可以參考相應(yīng)的幫助文檔。

      注意:使用不同的Command對(duì)象需要導(dǎo)入不同的命名空間。OleDbCommand的命名空間為System.Data.OleDb。SqlCommand的命名空間為System.Data.SqlClient。OdbcCommand的命名空間為System.Data.Odbc。

      SqlCommand屬性:

      屬性 說(shuō)明

      CommandText 其返回類型為string, 獲取或設(shè)置要對(duì)數(shù)據(jù)源執(zhí)行的 SQL 語(yǔ)句、存儲(chǔ)過(guò)程或表。

      CommandTimeOut 其返回類型為int,獲取或設(shè)置在終止執(zhí)行命令的嘗試并生成錯(cuò)誤之前的等待時(shí)間。

      CommandType 其返回類型為CommandType,讀取或設(shè)置表示CommandText屬性將如何被解釋的值,其有效的值可以為CommandType.Text、CommandType.StoredProcedur與CommandType.TableDirect,分別表示SQL語(yǔ)句、存儲(chǔ)過(guò)程調(diào)用或要讀取的表,默認(rèn)為Text。

      Connection 其返回類型為string, 獲取或設(shè)置 SqlCommand 的此實(shí)例使用的 SqlConnection。

      Parameters 其返回類型為SqlParameterCollection,取得提供給命令的參數(shù)(如有)。

      SqlCommand方法:

      方法 說(shuō)明

      Cancle() 其返回類型為void,取消命令的執(zhí)行

      CreateParameter() 其返回類型為SqlParameter, 用于創(chuàng)建 SqlParameter 對(duì)象的新實(shí)例。

      ExecuteNonQuery() 其返回類型為int,執(zhí)行不返回結(jié)果集的Sql語(yǔ)句,包括INSERT、UPDATE與DELETE語(yǔ)句、DDL語(yǔ)句和不返回結(jié)果集的存儲(chǔ)過(guò)程調(diào)用。返回的int值是命令影響的數(shù)據(jù)庫(kù)行數(shù)。

      ExecuteReader() 其返回類型為SqlDataReader, 執(zhí)行SELECT語(yǔ)句、TableDirect命令或返回結(jié)果集的存儲(chǔ)過(guò)程調(diào)用。在SqlDataReader對(duì)象中返回結(jié)果集。

      ExecuteScalar() 其返回類型為object,執(zhí)行返回單個(gè)值的SELECT語(yǔ)句(任何其他的值將被忽略)。這個(gè)命令結(jié)果作為對(duì)象被返回。

      ExecuteXMLReader() 其返回類型為XmlReader,執(zhí)行返回XML數(shù)據(jù)的SELECT語(yǔ)句,用XMLReader對(duì)象返回結(jié)果集,只適用于SqlCommand類

      生成SqlCommand對(duì)象

      我們可以用構(gòu)造函數(shù)生成SqlCommand對(duì)象,也可以調(diào)用SqlConnection對(duì)象的CreateCommand()方法生成SqlCommand對(duì)象,下面分別介紹這兩種方法。

      用構(gòu)造函數(shù)生成SqlCommand對(duì)象

      SqlCommand對(duì)象的構(gòu)造函數(shù)如下所示:

      SqlCommand()

      SqlCommand(string commandText)

      SqlCommand(string commandText,SqlConnection MySQLConnection)

      程序代碼說(shuō)明:在上述語(yǔ)法范例的程序代碼中,commandText包含SQL語(yǔ)句、存儲(chǔ)過(guò)程調(diào)用或要讀取的表。MySQLConnection是對(duì)應(yīng)的SqlConnection對(duì)象。

      在使用SqlCommand對(duì)象之前,首先要確定一個(gè)SqlConnection對(duì)象,用于和SQL Server數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)傳遞。

      MySQLConnection.ConnectionString="server=localhost;database=Northwind;
      integrated security=SSPI";

      然后可以用下列語(yǔ)句生成新的SqlCommand對(duì)象:

      SqlCommand MySQLCommand=new SqlCommand();

      再將mySqlCommand對(duì)象的Connection屬性設(shè)置為MySQLConnection:

      mySqlCommand.Connection= MySQLConnection;

      這樣mySqlCommand對(duì)象就可以使用MySQLConnection與數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)傳遞。現(xiàn)在,Command對(duì)象的CommandType屬性確定要執(zhí)行的命令類型。可以用System.Data.CommandType枚舉值指定CommandType屬性。

      CommandType的枚舉值如下表所示:

      數(shù)值 說(shuō)明

      Text 表示命令是SQL語(yǔ)句,默認(rèn)值是Text

      StoredProcedure 表示命令是儲(chǔ)存過(guò)程調(diào)用

      TableDirect 表示被讀取的行和列的表名。注意:SqlCommand對(duì)象不支持TableDirect,要使用其他的Command類的對(duì)象。

      例如你可以采用如下的形式執(zhí)行一個(gè)SQL查詢:

      以下為引用的內(nèi)容:
      SqlCommand MySQLCommand=new SqlCommand();
      mySqlCommand.Connection=MySQLConnection;
      MySQLCommand.CommandText=”SELECT * FROM Employees”;
      //MySQLCommand.CommandType=CommandType.Text;

      程序代碼說(shuō)明:在上述語(yǔ)法范例的程序代碼中,我們?cè)O(shè)置了mySqlCommand對(duì)象的commandText為一個(gè)SELECT查詢語(yǔ)句,并且指定了MySQLCommand對(duì)象的CommandType屬性為CommandType.Text,表示命令是SQL語(yǔ)句。由于CommandType.Text是默認(rèn)的CommandType值,所以我們可以將其注譯掉。

      還有一個(gè)更具效率的形式,那就是使用SqlCommand對(duì)象的其中一種構(gòu)造函數(shù):

      SqlCommand MySQLCommand=new SqlCommand(”SELECT * FROM Employees”,myConnection);

      程序代碼說(shuō)明:在上述語(yǔ)法范例的程序代碼中,我們可以直接利用SqlCommand(string commandText,SqlConnection MySQLConnection) 構(gòu)造函數(shù),從而使得程序代碼更加的簡(jiǎn)練和直觀。

      還可以使用儲(chǔ)存過(guò)程來(lái)查詢所需要的數(shù)據(jù),我們可以采用如下的代碼形式:

      以下為引用的內(nèi)容:
      SqlCommand MySQLCommand=new SqlCommand(”GetEmpolyees”,myConnection);
      MySQLCommand.CommandType=CommandType.StoredProcedure;

      程序代碼說(shuō)明:在上述語(yǔ)法范例的程序代碼中,GetEmpolyees為一個(gè)儲(chǔ)存過(guò)程名,用來(lái)實(shí)現(xiàn)所有的雇員信息查詢。并且將CommandType值指定為StoredProcedure,表示命令是儲(chǔ)存過(guò)程調(diào)用。

      使用CreateCommand()方法生成SqlCommand對(duì)象

      如果不用構(gòu)造函數(shù),也可以使用SqlConnection對(duì)象的CreateCommand()方法生成SqlCommand對(duì)象。這個(gè)方法返回新的SqlCommand對(duì)象。例如:

      SqlCommand mySqlCommand=MySQLConnection.CreateCommand();

      分享:ASP.NET多頻道網(wǎng)站架構(gòu)實(shí)現(xiàn)方法
      各頻道分別位于不同的Web Project(具有獨(dú)立的二級(jí)域名),并將所有的業(yè)務(wù)邏輯以及數(shù)據(jù)訪問(wèn)功能封裝成Class Library,所有頻道共用這個(gè)Class Library。 下面詳細(xì)介紹實(shí)現(xiàn)方法。 假設(shè)網(wǎng)站有三

      來(lái)源:模板無(wú)憂//所屬分類:.Net教程/更新時(shí)間:2008-08-22
      相關(guān).Net教程