ADO.NET結合C#常見的數據庫操作(一)


  ADO.NET使我們在VS開發中用到最多的數據庫訪問接口,這里我不見它的原理和其它,直接說它的幾種常見的用法。

聲明:在ADO.NET全部講完之后,會將整個源代碼貼出,將單個的時候只貼出涉及到的代碼。

一、SqlCommand  

  表示要對 SQL Server 數據庫執行的一個 Transact-SQL 語句或存儲過程。 此類不能被繼承。Command類可以執行任何類型的SQL語句。

  1、構造函數

  我們在使用其執行SQL語句的時候,必須首先聲明其對象,常用的三種:

  ◆ SqlCommand()           初始化 SqlCommand 類的新實例。

  ◆ SqlCommand(String)   用查詢文本初始化 SqlCommand 類的新實例。

  ◆ SqlCommand(String,SqlConnection)  初始化具有查詢文本和 SqlConnection 的 SqlCommand 類的新實例。

【注】SqlConnection 的使用將不單獨講,因為在操作數據庫的時候都會用到。

  2、常見屬性

  ◆ CommandText    獲取或設置要對數據源執行的 Transact-SQL 語句、表名或存儲過程。

  ◆ CommandType   獲取或設置一個值,該值指示如何解釋 CommandText 屬性。

  ◆ Connection         獲取或設置 SqlCommand 的此實例使用的 SqlConnection。

  ◆ Parameters         獲取 SqlParameterCollection(sql語句中需要輸入的闡述集合)。

  3、常用方法

  ◆ ExecuteNonQuery    執行 Transact-SQL INSERT、DELETE、UPDATE 及 SET 語句等命令並返回受影響的行數。 

  ◆ ExecuteReader()     將 CommandText 發送到 Connection 並生成一個 SqlDataReader。

  ◆ ExecuteReader(CommandBehavior)  將 CommandText 發送到 Connection,並使用 CommandBehavior 值之一生成一個 SqlDataReader。

  ◆ ExecuteScalar         執行查詢,並返回查詢所返回的結果集中第一行的第一列。 忽略其他列或行。

  ◆ Dispose()                釋放由 Component 使用的所有資源。 

 

  3、示例

  ◇使用SqlCommand執行添加數據的操作:

string teacherName = NameTextBox.Text.Trim();
string strConn = ConfigurationManager.ConnectionStrings["ConnectionStr"].ToString();//獲取數據庫連接字符串
SqlConnection conn = new SqlConnection(strConn);//創建連接

try
{
     conn.Open();//打開數據庫連接
     string inserStr = "insert into Fortyfour_Teacher (TeacherName) values (@teacherName)";
     using(SqlCommand cmd = new SqlCommand(inserStr,conn))    
   { SqlParameter p1
= new SqlParameter("@teacherName",teacherName); cmd.Parameters.Add(p1);//添加參數 if (cmd.ExecuteNonQuery() > 0) { //添加成功的操作 } else { //添加失敗的操作 } } } catch(Exception ex){ throw ex; } finally{ conn.Close();//關閉數據庫,可以在打開 conn.Dispose();//關閉數據庫,釋放控件,不可在連接。 }

  ◇使用SqlCommand執行刪除、修改數據的操作,這里我不寫出代碼,這個和添加很像,區別在於 sql語句不一樣

  ◇使用SqlCommand執行查詢數據的操作,這個需要結合DataReader()或者DataAdapter()來獲得數據庫中的數據,DataAdapter()將在后面的文章中詳細講解,現在將講解一下DataReader()。

二、SqlDataReader 

  提供一種從 SQL Server 數據庫讀取行的只進流的方式。 此類不能被繼承。只能向下順序執行,一次讀取一條記錄,所以需要隨時保存的記錄。

  1、常用屬性

  ◆ IsClosed     檢索一個布爾值,該值指示是否已關閉指定的 SqlDataReader 實例。

  2、常用方法

  ◆ Read()                        使 SqlDataReader 前進到下一條記錄。

  ◆ Close                          關閉 SqlDataReader 對象。 

  ◆ Dispose()                    釋放 DbDataReader 類的當前實例所使用的所有資源。 

  ◆ IsCommandBehavior   確定指定的 CommandBehavior 是否與 SqlDataReader 的對應項匹配。

  ◆ IsDBNull                      獲取一個值,用於指示列中是否包含不存在的或缺少的值。

  3、示例,結合SqlCommand

 

private static void ReadStudent(string connectionString)
{
    string queryString = "SELECT StudentId, StudentName FROM Student";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();

        using(SqlDataReader reader = command.ExecuteReader()){//使用DataReader對象保存讀取的數據
          while (reader.Read())//向下讀取數據,判斷是否有數據
          {
              Console.WriteLine(String.Format("{0}, {1}",reader[0], reader[1]));
          }
        }
    }
}

 

   參考資料:MSDN

  【注】下篇文章將詳細講解DataAdapter與DataSet/DataTable,以及CommandBuilder

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM