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) 主要属性

  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 [email protected],[email protected]"
                + " WHERE [email protected];";
            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;
        }
    }

原文地址:https://www.cnblogs.com/CTHK/p/9886511.html

时间: 2024-08-03 04:55:22

ADO.NET之Datatable的应用的相关文章

ADO.Net中DataTable的应用(知识点描述、思维导图、示例代码、效果截图)

在我们编写代码的时候从数据库里取出数据,填充到dataset里,再根据表的名字,实例化到 DataTable 中.下面是 Ado.Net 关系:Connection_____Command____DataAdapter____Dataset  _____Datareader ADO.NET可以在与数据库断开连接的方式下通过DataSet或DataTable对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源. 一.思维导图: 二.知识点描述: Data Table的构造函数:

ADO.Net中DataTable的应用

思维导图 1.分页 初始化设置:设置每页大小:设置当前页号为1: 载入数据表:将SQL命令连接属性指向SQL连接,SQL命令查询表的内容,使用数据适配器将查询命令属性指向SQL命令,声明并实例化数据表用以保存数据,以用作数据网格视图的数据源,用数据适配器填充数据表:指定SQL命令的命令文本:该命令查询所有学生成绩,但只返回空表,即只获取架构:声明并实例化SQL数据适配器:SQL数据适配器读取数据,并只将架构填充至医生信息数据表:声明并实例化数据列,用于保存行编号:设置数据列的名称.类型,类型需借

ado.net之实用篇

一.概念理解  ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据.之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口. 二.类库组成  Connection 类 数据库连接器.连接帮助指明数据库服务器.数据库名字.用户名.密码,和连接数据库所需要的其它参数.Connection对象会被Command对象使用,这样就能够知道是在哪个数据源上面执行命

.NET Core 2.0和ASP.NET Core 2.0正式版抢先体验

.NET Standard 2.0 is final Broad platform support. .NET Standard 2.0 is supported on the following platforms: .NET Framework 4.6.1 .NET Core 2.0 Mono 5.4 Xamarin.iOS 10.14 Xamarin.Mac 3.8 Xamarin.Android 7.5 UWP is work in progress and will ship late

说说.NET中被我忽视的方法

.NET中有些方法以前没有接触过,但用过了之后让人眼前一亮,哇,原来你这么好用. 下面就说说被我忽视过的方法.当然,每个人的编程经历,涉猎面及对.NET的认知程度都不一样.所以,这只是一家之言,肯定有很多不足之处,欢迎大家批评指正. 1. ADO.NET类 DataTable.Merge() 如何合并两张表?自己以前写的方法: private void UniteTable(DataTable sourceTable, DataTable targetTable) { foreach (Data

《深入浅出WPF》学习笔记之深入浅出话Binding

Binding作为数据的桥梁,它的两端分别是Binding的源(Source)和目标(Target),用来把Source中的数据送到Target中,并把在Target中的改变返回到Source.一般情况,Binding的源是逻辑层的对象,目标是UI层的控件对象. Binding的基本使用方法 如果想让作为数据源的对象在发生更改时自动显示到界面上,数据源的对象需要实现INotifyPropertyChanged接口.设置绑定时需要指定绑定到数据源的哪个属性,这个属性称为Binding的路径Path

学习实践:使用模式,原则实现一个C++数据库访问类

一.概述 在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦,要应对很多的细节,很容易出错. 我要写一个动态链接库,将对libMySQL的操作封装起来,以二进制复用代替源码级复用:要提供线程安全的接口,用户无需关系是否加锁这样细节性的问题,减少出错及死锁的机会,当然也要允许用户自己选择是否线程安全的访问数据库:要简化访问数据库的流程,接口越简单越好. 我从20

[Aaronyang] 写给自己的WPF4.5 笔记5[数据绑定三巴掌1/3]

生活总有意外,微笑对待每一件事,无需抱怨--Aaronyang的博客(www.ayjs.net) 博文摘要:数据库下载 教你如何在vs2013中不安装Mssql数据库,使用了Sqlserver Compact,以及全部ef操作这个数据库. 教你从后台取数据,怎么绑定前台数据,并通过wpf的方式更新界面数据,ObservableCollection和属性通知 教你如何绑定集合的数据,教你如何关联的前台绑定集合数据 教你使用前台绑定radiobutton和简单的值转换器,字符格式化器 教你使用了AY

我的C++数据库访问类

一.概述 在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦,要应对很多的细节,很容易出错. 我要写一个动态链接库,将对libMySQL的操作封装起来,以二进制复用代替源码级复用:要提供线程安全的接口,用户无需关系是否加锁这样细节性的问题,减少出错及死锁的机会,当然也要允许用户自己选择是否线程安全的访问数据库:要简化访问数据库的流程,接口越简单越好. 我从20