一、思维导图
一、 定义
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的应用
原文地址:https://www.cnblogs.com/CTHK/p/9886511.html