学习笔记:ADO.Net中DataTable的应用

一、思维导图

二、知识点描述

  DataTable 表示一个内存内关系数据的表,可以独立创建和使用,也可以由其他 .NET Framework 对象使用,最常见的情况是作为 DataSet 的成员使用。数据库中存储的是实体表,实体表中有一系列的数据。而DataTable即存储在内存中的表,是可以独立创建和使用的。在持久化到数据库之前,是不会对数据库产生影响的,持久化到数据库可以使用dataAdapter.Update的方法(dataAdapter是某个实例化的DataAdapter对象)。

  DataTable对象用来保存单个表数据,在System.Data命名空间中定义。它包含由DataCloumnCollection表示集合以及由ConstraintCollection表示的约束集合,这两个共同定义表的架构。DataTable还包含DataRowCollection所表示的行的集合,而DataRowCollection则包含表中的数据。其他使用DataTable的对象包括DataSet和DataView。

  当访问DataTable对象时,请注意它们是按条件区分大小写的。例如,如果一个DataTable被命名为“mydatatable”,另一个被命名为“Mydatatable”,则用于搜索其中一个表的字符串被认为是区分大小写的。但是,如果“mydatatable”存在而“Mydatatable”不存在,则认为该搜索字符串不区分大小写。一个DataSet可以包含数个DataTable对象,它们具有相同的TableName属性值和不同的Namespace属性值。

常用属性
属性说明
Columns获取属于此表的列的集合
Constraints获取由这个表维护的约束的集合
DataSet获取此表所属的DataSet
DefaultView获取可能包含过滤视图的表的自定义视图
HasErrors获取指示DataSet表中的任何行中是否存在错误的值
MinimumCapacity获取或设置此表的初始起始大小
PrimaryKey获取或设置一个用作数据表主键的列数组
Rows获取属于此表的行的集合
TableName获取或设置DataTable的名称
CaseSensitive指示表中的字符串比较是否区分大小写
ChildRelations 获取此DataTable的子关系的集合

 

常用方法
方法说明
AcceptChanges()提交对此表进行的所有更改
Clear()清除所有数据的DataTable
Copy()复制DataTable的结构和数据
Clone()克隆DataTable的结构
CreateDataReader()返回与此DataTable中的数据相对应的DataTableReader
CreateInstance()创建DataTable的新实例
GetRowType()获取行类型
ImportRow(DataRow)将DataRow复制到DataTable中
Load(IDataReader)使用提供的IDataReader从数据源填充DataTable
NewRow()创建一个与表具有相同模式的新DataRow
BeginInit()开始初始化在窗体上使用或由另一个组件使用DataTable。初始化发生在运行时。
BeginLoadData()在加载数据时关闭通知、索引维护和约束
Dispose()释放由MarshalByValueComponent使用的所有资源
Reset()将DataTable重置为其初始状态
Select()获取DataRow对象的数组
WriteXml()

                               使用指定的对象以XML格式写入DattaTable的当前内容

三、示例代码


using System.Data.SqlClient;//需要补充该代码,添加引用


        /// <summary>
        /// 私有字段:药品表;
        /// </summary>
        private DataTable MedincineTable;



     
            this.dgv_Medincine .AllowUserToAddRows = false;                                                      
            //数据网格视图不允许用户添加行;
            this.dgv_Medincine.RowHeadersVisible = false;                                                       
             //数据网格视图的行标题不可见;
            this.dgv_Medincine.BackgroundColor = Color.White;                                                   
            //数据网格视图的背景色设为白色;
            this.dgv_Medincine.AutoSizeColumnsMode =
                DataGridViewAutoSizeColumnsMode.AllCells;                                                   
            //数据网格视图的自动调整列宽模式设为(显示)所有单元格;
       
        



       //点击载入按钮后
        
            SqlConnection sqlConnection = new SqlConnection();                                              
           //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=ResidentEduBase;Integrated Security=sspi";                             
            //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand sqlCommand = new SqlCommand();                                                       
            //声明并实例化SQL命令;
            sqlCommand.Connection = sqlConnection;                                                        
            //将SQL命令的连接属性指向SQL连接;
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           
            //声明并实例化SQL数据适配器;
            sqlDataAdapter.SelectCommand = sqlCommand;                                                      
            //将SQL数据适配器的查询命令属性指向SQL命令;
            
            DataTable medincineTable = new DataTable();                                                       
           //声明并实例化数据表,用于保存所有药品,以用作数据网格视图的数据源;
            sqlConnection.Open();                                                                           
           //打开SQL连接;
           
            sqlCommand.CommandText = "SELECT * FROM tb_Medincine;";                                           
            //指定SQL命令的命令文本;该命令查询所有药品;
            sqlDataAdapter.Fill(medincineTable);                                                              
            //SQL数据适配器读取数据,并填充药品数据表;
            sqlConnection.Close();                                                                          
           //关闭SQL连接;
            this.MedincineTable = medincineTable;                                                               
            //将药品表赋予本窗体的相应私有字段,便于其它方法访问;
            this.dgv_Medincine.Columns.Clear();                                                                 
            //数据网格视图的列集合清空;
            this.dgv_Medincine.DataSource = medincineTable;                                                       
            //将数据网格视图的数据源设为药品数据表;
            this.dgv_Medincine.Columns["No"].HeaderText = "编号";                                               
            //将数据网格视图的指定列的表头文本设为中文;
            this.dgv_Medincine.Columns["Name"].HeaderText = "名称";
            this.dgv_Medincine.Columns["Method"].HeaderText = "用法";
            this.dgv_Medincine.Columns["Amount"].HeaderText = "数量";

            this.dgv_Medincine.Columns[this.dgv_Medincine.Columns.Count - 2].AutoSizeMode =            //数据网格视图的倒数第2列(即照片列)的自动调整列宽模式设为填充(至数据网格视图右侧边缘);
                DataGridViewAutoSizeColumnMode.Fill;
       
        

四、效果截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值