第八周学习笔记-ADO.Net中DataTable的应用
ADO.Net中DataTable的应用
一、知识点描述
1、概述:DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个表),是ADO.Net库中的核心对象。
2、DataTable类将关系数据表示为表格形式,ADO.Net提供了一个DataTable类来独立创建和使用数据表。
3、在创建DataTable之前,必须包含using System.Data名称空间。
4、DataTable的常用属性
①Columns:它用于获取属于此表的列的集合。
②DataSet:它用于获取此表所属的DataSet。
③Rows:它用于获取属于此表的行的集合。
④PrimaryKey:它用于获取或设置一个用作数据表主键的列数组。
⑤TableName:它用于获取或设置DataTable的名称。
5、主要用法:
①创建和使用DataTable
(1)DataTable Table = new DataTable(); (声明实例化数据表)
(2)sqlDataAdapter.Fill(bedTable); (sql数据适配器读取数据,并填充数据表)
(3)this.DataGridView.DataSource =Table; (将数据网格视图的数据源设为数据表)
(4)应用数据表里的各个属性用于绑定数据网格视图的列。
②DataTable中的数据处理
(1)向数据表中插入数据,创建新行并将它们添加到表中。
(2)查看数据表中的数据。
(3)更新或修改数据表中的数据。
(4)删除DataGridView中相关行的数据并同时删除与之绑定的数据表中的数据。
(5)数据表的复制。
二、思维导图

三、示例代码
1、查看数据表中的数据
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString =
"Server=(local);Database=EduBase1;Integrated Security=sspi";
SqlCommand sqlCommand = new SqlCommand();
SqlCommand sqlCommand2 = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand2.Connection = sqlConnection;
sqlCommand.CommandText = "SELECT * FROM tb_Room;";
sqlCommand2.CommandText = "SELECT * FROM tb_Nurse WHER No=@No;";
sqlCommand2.Parameters.AddWithValue("@No", this.工号.Text.Trim());
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();
sqlDataAdapter.SelectCommand = sqlCommand;
DataTable roomTable = new DataTable();
sqlConnection.Open();
sqlDataAdapter.Fill(roomTable);
this.所属科室.DataSource = roomTable;
this.所属科室.DisplayMember = "Name";
this.所属科室.ValueMember = "No";
SqlDataReader sqlDataReader = sqlCommand2.ExecuteReader();
byte[] photoBytes = null;
if (sqlDataReader.Read())
{
this.姓名.Text = sqlDataReader["Name"].ToString();
this.rdb_Male.Checked = (bool)sqlDataReader["Gender"];
this.rdb_Female.Checked = !(bool)sqlDataReader["Gender"];
this.职称.Text = sqlDataReader["Title"].ToString();
this.所属科室.SelectedValue =(int) sqlDataReader["RoomNo"];
photoBytes =(sqlDataReader["Photo"] == DBNull.Value ? null : (byte[])sqlDataReader["Photo"]);
}
sqlDataReader.Close();
if (photoBytes !=null)
{
MemoryStream memoryStream = new MemoryStream(photoBytes);
this.照片.Image = Image.FromStream(memoryStream);
}
2、更新数据表中的数据
MemoryStream memoryStream = new MemoryStream();
this.照片.Image.Save(memoryStream, ImageFormat.Bmp);
byte[] photoBytes = new byte[memoryStream.Length];
memoryStream.Seek(, SeekOrigin.Begin);
memoryStream.Read(photoBytes, , photoBytes.Length);
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString
"Server=(local);Database=EduBase1;Integrated Security=sspi";
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandText =
"UPDATE tb_Nurse"+ " SET Name=@Name,Gender=@Gender,Title=@Title,RoomNo=@RoomNo,Photo=@Photo"
+ " WHERE No=@No;";
sqlCommand.Parameters.AddWithValue("@Name", this.姓名.Text.Trim());
sqlCommand.Parameters.AddWithValue("@Gender", this.rdb_Male.Checked);
sqlCommand.Parameters.AddWithValue("@Title", this.职称.Text.Trim());
sqlCommand.Parameters.AddWithValue("@RoomNo", (int)this.所属科室.SelectedValue);
sqlCommand.Parameters.AddWithValue("@Photo", photoBytes);
sqlCommand.Parameters.AddWithValue("@No", this.工号.Text.Trim());
sqlConnection.Open();
int rowAffected = sqlCommand.ExecuteNonQuery();
sqlConnection.Close();
if (rowAffected.ToString() == "")
{
MessageBox.Show("更新成功!" );
}
3、删除表中的数据
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString
"Server=(local);Database=EduBase1;Integrated Security=sspi";
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlConnection.Open();
sqlCommand.CommandText = "DELETE FROM tb_Nurse WHERE No=" + 工号.Text.Trim();
int rowAffected = sqlCommand.ExecuteNonQuery();
sqlConnection.Close();
if (rowAffected.ToString() == "")
{
MessageBox.Show("删除成功!");
}
else
{
MessageBox.Show("删除失败!");
}
4、数据复制
①datatable复制表结构:使用.clone()方法;
DataTable oldDT = GetDataTable();
DataTable newDT = oldDT.Clone();
②把datatable中的所有信息复制到一个新的datatable,包括结构和数据:
DataTable oldDT = GetDataTable();
DataTable newDT = oldDT.Copy();
③复制datatable中的某一行:使用.ImportRow()方法;
DataTable oldDT = GetDataTable();
DataTable newDT = new DataTable();
newDT.ImportRow(oldDT.Rows[]);//把原来datatable中的第二行数据复制到新的datatable中。
四、效果截图


第八周学习笔记-ADO.Net中DataTable的应用的更多相关文章
- 第九周学习笔记-ADO.Net中DataSet的应用
一.知识点描述 1.含义:DataSet是ADO.Net的断开式结构的核心组件,它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据.DataSet包含一个或多个DataTable ...
- 20145213《Java程序设计》第八周学习笔记
20145213<Java程序设计>第八周学习笔记 教材学习内容总结 "桃花春欲尽,谷雨夜来收"谷雨节气的到来意味着寒潮天气的基本结束,气温回升加快.刚出冬的我对于这种 ...
- 《Linux内核分析》第八周学习笔记
<Linux内核分析>第八周学习笔记 进程的切换和系统的一般执行过程 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163 ...
- 20165326 java第八周学习笔记
第八周学习笔记 知识点总结 1.进程与线程 进程:程序的一次动态执行过程 区别:进程和线程的区别? 进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元 同一个进程中可以包括多个线程,并 ...
- Linux 内核分析第八周学习笔记
Linux 内核分析第八周学习笔记 zl + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10 ...
- Linux内核分析——第八周学习笔记20135308
第八周 进程的切换和系统的一般执行过程 一.进程切换的关键代码switch_to分析 1.进程调度与进程调度的时机分析 (1)进程分类 第一种分类 I/O-bound:等待I/O CPU-bound: ...
- 20135320赵瀚青LINUX第八周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周学习的是linux ...
- 20179223《Linux内核原理与分析》第八周学习笔记
视频学习 可执行文件是怎么得来的? .c汇编成汇编代码.asm,然后再汇编成目标码.o.然后在连接成可执行文件,然后加载到内存可执行了. 对hello.c文件预处理(cpp),预处理负责把includ ...
- Linux内核分析——第八周学习笔记
实验作业:进程调度时机跟踪分析进程调度与进程切换的过程 20135313吴子怡.北京电子科技学院 [第一部分]理解Linux系统中进程调度的时机 1.Linux的调度程序是一个叫schedule()的 ...
随机推荐
- vue--简化项目逻辑属性
computed属性对数据变化是实时响应的 因此当项目中某个数值发生变化,并且要在别的地方引用这个数值时,computed即可派上用场 来看一个例子: html部分: <div id=" ...
- docker笔记(3) ------Django项目的docker部署
2019-01-12 14:23:18 django容器连接到mysql_server容器分析:原myblog项目使用sqlit3数据库,使用mysql容器前需要在django中加入pymysql ...
- react简书笔记一 环境, git 和 项目 关联
1.. 建立git项目 ( 码云, github 都可以 ), 具体步骤: https://www.cnblogs.com/andy-lehhaxm/p/10720717.html 1.1 git ...
- object的wait()、notify()、notifyAll()、方法和Condition的await()、signal()方法
wait().notify()和notifyAll()是 Object类 中的方法 从这三个方法的文字描述可以知道以下几点信息: 1)wait().notify()和notifyAll()方法是本地方 ...
- delphi提示“Undeclared identifier”TForm的缺少引用单元列表
在interface uses 添加TForms;
- 【转】所有版本chrome、chromedriver、firefox下载链接
所有版本chrome.chromedriver.firefox下载链接 1. 所有版本chrome下载 是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是 ...
- HDU - 6054String and String
题意:给串s和t,对于串s每个位置有一个价值f,两种操作1.修改f[a]=b,2.查询串t子串Ta-b在s的子串Sc-d中出现位置的f和 题解:s和t建sam,把fail树按dfs序建bit套线段树, ...
- 手动编译tomcat
0. 准备 (1) 配置好Java, 我这里使用的Oracle jdk 1.8.0_192; (2) 配置好Ant, 我这里使用的ant 1.10.5; (3) tomcat源代码, 我这里使用的 a ...
- 一、Git简介
由于工作需要,代码版本控制工具由SVN换为了Git.Git对于我来说,很陌生,不清楚其工作原理,所以查询了一些资料,将自己所得知的内容来汇总一下,梳理一下这方面的知识,同时也给其他想了解Git的童鞋们 ...
- day21_python_1124
01 昨日内容回顾 类与类之间的关系: 依赖关系:将一个类的对象或者类名传到另一个类中. 关联关系 组合关系:将一个类的对象封装到另一个类的对象属性中. 聚合关系 boy gril school te ...