1. 程式人生 > >ADO.NET之Datatable的應用

ADO.NET之Datatable的應用

find tro 初始化 真的 con 表示 實現 current datatable

一、思維導圖

技術分享圖片

一、 定義

Datatable類將關系數據表示為表格形式。

ADO.NET提供了一個Datatable類來獨立創建和使用數據表。它也可以和Dataset一起使用。 最初,當創建Datatable時,它沒有表模式。我們可以通過向表中添加列和約束來創建表模式。在定義表模式之後,可以向表中添加行。在創建Datatable之前,必須包含System.Data名稱空間。

二、 構造函數

(1) DataTable Doctertable=new DataTable() 初始化沒有參數的新實例。

(2) DataTable Doctertable=new DataTable(String) 使用指定表名初始化。

(3) DataTable Doctertable=new DataTable(String,String)使用指定表名和命名空間初始化。

三、 主要屬性和方法

(1) 主要屬性

  1. Columns 用於獲取屬於表的列集合
  2. Rows 用於獲取屬於表的行集合
  3. DateSet 用於獲取屬於表的數據源

(2) 主要方法

  1. Clear() 用於清除表中所有的數據
  2. Clone() 用來克隆DataTable的數據結構

3. SqlDataAdapter.Fill(Doctertable) 通過DataAdapter將填充表Doctertable。

4. DataRow [] drs; 通過DataRow數組導入DataTable

四、 應用

通過DataGridView控件來顯示DataTable中表的內容,並且對其內容進行一系列的操作。

1、 創建一個表

DataTable Doctertable=new DataTable();

2、 添加行和列

Doctertable.Columns.Add("column0",System.Type.GetType("System.String"))

或者 this.dgv_Score.Columns.Add(KeshiColumn);

3、 搜索行的內容

DataRow[] searchResultRows =

this.DocterTable.Select("PinYin LIKE ‘%" + this.tb_拼音 .Text.Trim() + "%‘");

4、 復制表的結構

DataTable searchResultTable = this.DocterTable.Clone();

5、 復制表的結構和內容

DataTable searchResultTable = this.DocterTable.Copy();

6、 降序或者升序

this.DocterViewByName.Sort = "DOCName ASC";

7、 臨時添加或者刪除行(不是真的添加或者刪除)

DataRow selectedCourseRow = ((DataRowView)this.dgv_SelectedCourse.CurrentRow.DataBoundItem).Row;                                  

 if (selectedCourseRow.RowState == DataRowState.Added)                                      

                {

                   string courseNo = selectedCourseRow["No"].ToString();                                  

                    DataRow deletedCourseRow =                                                             

                        this.CourseTable.Select("No=‘" + courseNo + "", "", DataViewRowState.Deleted)[0];

                    deletedCourseRow.RejectChanges();                                                       

                    this.SelectedCourseTable.Rows.Remove(selectedCourseRow);                               

                    this.lbl_CreditSum.Text =                                                               

 "" + this.SelectedCourseTable.Compute("SUM(Credit)", "").ToString() + "";                   }

五、應用實例

添加如下控件,並實現對表的搜索。

技術分享圖片

實現代碼:

  private void bt_更新_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();                                              
            sqlConnection.ConnectionString =
                "Server=DESKTOP-VKS7HLB;Database=手術麻醉系統;Integrated Security=sspi";
            SqlCommand sqlCommand = new SqlCommand();                                                       
            sqlCommand.Connection = sqlConnection;                                                          
            sqlCommand.CommandText =                                                                        
                "UPDATE tb_Nurse"
                + " SET NurseName=@NurseName,Sex=@Sex"
                + " WHERE NurseID=@NurseID;";
            sqlCommand.Parameters.Add("@NurseName", SqlDbType.VarChar, 0, "NurseName");                         
            sqlCommand.Parameters.Add("@Sex", SqlDbType.Bit, 0, "Sex");
            sqlCommand.Parameters.Add("@NurseID", SqlDbType.Char, 0, "NurseID");
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           
            sqlDataAdapter.UpdateCommand = sqlCommand;                                                      
           this.NurseTable = (DataTable)this.dgv_Score.DataSource;                                  
            sqlConnection.Open();                                                                           
            int rowAffected = sqlDataAdapter.Update(NurseTable);                                          
            sqlConnection.Close();                                                                          
            MessageBox.Show("更新" + rowAffected.ToString() + "行。");
        }

        private void bt_搜索_Click(object sender, EventArgs e)
        {
            DataRow searchResultRow = this.NurseTable.Rows.Find(this.tb_編碼 .Text.Trim());          
            DataTable searchResultTable = this.NurseTable.Clone();                                         
            searchResultTable.ImportRow(searchResultRow);                                                   
            this.dgv_Score.DataSource = searchResultTable;
        }
    }

ADO.NET之Datatable的應用