ADO.NET之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) 主要屬性
- Columns 用於獲取屬於表的列集合
- Rows 用於獲取屬於表的行集合
- DateSet 用於獲取屬於表的數據源
(2) 主要方法
- Clear() 用於清除表中所有的數據
- 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的應用