当前位置: 首页 > article >正文

C# 数据集

要点:
1、Connection对象概述
2、连接数据库
3、关闭连接
4、Command对象概述
5、设置数据源类型
6、执行SQL语句
7、DataReader对象概述
8、判断查询结果中是否有值
9、读取数据
10、DataAdapter对象概述
11、填充DataSet数据集
12、更新数据源
13、DataSet对象概述
14、合并DataSet内容
15、复制DataSet内容

一 Connection对象概述

Connection对象是一个连接对象,主要功能是建立与物理数据库的连接。其主要包括4种访问数据库的对象类,也可称为数据提供程序,分别介绍如下。
SQL Server数据提供程序,位于System.Data.SqlClient命名空间。
ODBC数据提供程序,位于System.Data.Odbc命名空间。
OLEDB数据提供程序,位于System.Data.OleDb命名空间。
Oracle数据提供程序,位于System.Data.OracleClient命名空间.

1 连接数据库

以SQL Server数据库为例,如果要连接SQL Server数据库,必须使用System.Data.SqlClient命名空间下的SqlConnection类。判断连接状态的语法如下:
public override ConnectionState State { get; }

2 关闭连接

当对数据库操作完毕后,要关闭与数据库的连接,释放占用的资源。通过调用SqlConnection对象的Close方法或Dispose方法关闭与数据库的连接,这两种方法的主要区别是:Close方法用于关闭一个连接,而Dispose方法不仅关闭一个连接,而且还清理连接所占用的资源。当使用Close方法关闭连接后,可以再调用Open方法打开连接,不会产生任何错误。而如果使用Dispose方法关闭连接,就不可以再次直接用Open方法打开连接,必须再次重新初始化连接再打开。

三 Command对象概述

Command对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的SQL语句。Command对象主要有以下几种方式。
SqlCommand:用于向SQL Server数据库发送SQL语句,位于System.Data.SqlClient命名空间。
OleDbCommand:用于向使用OLEDB公开的数据库发送SQL语句,位于System.Data.OleDb命名空间。例如,Access数据库和MySQL数据库都是OLEDB公开的数据库。
OdbcCommand:用于向ODBC公开的数据库发送SQL语句,位于System.Data.Odbc命名空间。有些数据库没有提供相应的连接程序,则可以配置好ODBC连接后,使用OdbcCommand。
OracleCommand:用于向Oracle数据库发送SQL语句,位于System.Data.OracleClient命名空间。

1 设置数据源类型

Command对象有3个重要的属性,分别是Connection属性、CommandText属性和CommandType属性。Connection属性用于设置SqlCommand使用的SqlConnection。CommandText属性用于设置要对数据源执行的SQL语句或存储过程。CommandType属性用于设置指定CommandText的类型。CommandType属性的值是CommandType枚举值,CommandType枚举有3个枚举成员,分别介绍如下。
StoredProcedure:存储过程的名称。
TableDirect:表的名称。
Text:SQL文本命令。

2 执行SQL语句

Command对象需要取得将要执行的SQL语句,通过调用该类提供的多种方法,向数据库提交SQL语句。
(1)ExecuteNonQuery方法
(2)ExecuteReader方法
(3)ExecuteScalar方法

四 DataReader对象概述

DataReader对象是数据读取器对象,提供只读向前的游标,如果应用程序需要每次从数据库中取出最新的数据,或者只是需要快速读取数据,并不需要修改数据,那么就可以使用DataReader对象进行读取。对于不同的数据库连接,有不同的DataReader类型。
在System.Data.SqlClient命名空间下时,可以调用SqlDataReader类。
在System.Data.OleDb命名空间下时,可以调用OleDbDataReader类。
在System.Data.Odbc命名空间下时,可以调用OdbcDataReader类。
在System.Data.Oracle命名空间下时,可以调用OracleDataReader类

1 判断查询结果中是否有值

可以通过SqlDataReader对象的HasRows属性获取一个值,该值指示SqlDataReader是否包含一行或多行,即判断查询结果中是否有值。
语法如下:

public override bool HasRows { get; }
属性值:如果SqlDataReader包含一行或多行,则为true;否则为false

2 读取数据

(1)如果要读取数据表中的数据,通过ExecuteReader方法,根据SQL语句创建一个SqlDataReader对象后,再调用SqlDataReader对象的Read方法读取数据。
语法:

public override bool Read ()

(2)在使用完SqlDataReader对象后,要使用Close方法关闭SqlDataReader对象。
语法:

public override void Close ()

例如:

 //实例化SqlConnection变量conn
 SqlConnection conn = new    SqlConnection("server=.;database=db_15;uid=sa;pwd=");
 //打开连接
 conn.Open();
 //创建一个SqlCommand对象
 SqlCommand cmd = new SqlCommand("select * from "+textBox1.Text.Trim(), conn);
//使用ExecuteReader方法创建SqlDataReader对象
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Close();

五 DataAdapter对象概述

DataAdapter对象是一个数据适配器对象,是DataSet与数据源之间的桥梁。
DataAdapter对象提供了4个属性,用于实现与数据源之间的互通。
SelectCommand属性:向数据库发送查询SQL语句
DeleteCommand属性:向数据库发送删除SQL语句 。
InsertCommand属性:向数据库发送插入SQL语句。
UpdateCommand属性:向数据库发送更新SQL语句。

1 填充DataSet数据集

通过DataAdapter对象的Fill方法填充DataSet数据集,Fill方法使用Select语句从数据源中检索数据。与Select命令关联的Connection对象必须有效,但不需要将其打开。

2 更新数据源

使用DataAdapter对象的Update方法,可以将DataSet(在15.7节中将会介绍DataSet对象)中修改过的数据及时地更新到数据库中。在调用Update方法之前,要实例化一个CommandBuilder类,它能自动根据DataAdapter的SelectCommand的SQL语句判断其他的InsertCommand、UpdateCommand和DeleteCommand。这样,就不用设置DataAdapter的InsertCommand、UpdateCommand和DeleteCommand属性,直接使用DataAdapter的Update方法来更新DataSet、DataTable或DataRow数组即可。

六 DataSet对象

1 DataSet对象概述

DataSet对象就像存放于内存中的一个小型数据库。它可以包含数据表、数据列、数据行、视图、约束以及关系。通常,DataSet的数据来源于数据库或者XML,为了从数据库中获取数据,需要使用数据适配器(DataAdapter)从数据库中查询数据。

2 合并DataSet内容

可以使用DataSet的Merge方法将DataSet、DataTable或DataRow数组的内容并入现有的DataSet中。Merge方法将指定的DataSet及其架构与当前的DataSet合并,在此过程中,将根据给定的参数保留或放弃在当前DataSet中的更改并处理不兼容的架构。
语法如下:

public void Merge (
	DataSet dataSet,
	bool preserveChanges,
	MissingSchemaAction  missingSchemaAction
)

3 复制DataSet内容

可以使用DataSet对象的Copy方法创建包含架构和数据的DataSet的原样副本。Copy方法的功能是复制指定DataSet的结构和数据。
语法:

public DataSet Copy ()

返回值:新的DataSet,具有与该DataSet相同的结构(表架构、关系和约束)和数据。


http://www.kler.cn/news/360623.html

相关文章:

  • sql server xml
  • Egg.js使用ejs快速自动生成resetful风格的CRUD接口
  • 数据门户:企业数字化转型的关键作用
  • Oracle里面,with ... as 用法介绍
  • 软考系统分析师知识点十三:软件需求工程
  • 【论文笔记】Adversarial Diffusion Distillation
  • Flux.using 使用说明书
  • LeetCode第101题. 对称二叉树
  • c语言操作符xiangjie
  • 10 django管理系统 - 管理员管理 - 新建管理员(通过模态框和ajax实现)
  • 快乐数--双指针
  • MSE Loss、BCE Loss
  • 电商大数据获取渠道分享--官方接口、爬虫、第三方如何选择?
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(3)
  • Taro构建的H5页面路由切换返回上一页存在白屏页面过渡
  • Vue day05
  • K8s-pod控制器ReplicaSet(RS)、Deployment(Deploy)
  • 7.three.js通用几何体加载与gltf模型、obj模型加载
  • 下载安装Qt6时建议勾选的组件
  • Golang使用viper读取配置到结构体,但是获取的数据为空