ExecuteNonQuery、ExecuteScalar、ExecuteReader区别
ExecuteNonQuery、ExecuteScalar、ExecuteReader区别
ExecuteNonQuery、ExecuteScalar、ExecuteReader区别ExecuteNonQuery()
执行命令对象的SQL语句,返回一个int变量,如果sql语句是对数据库的记录进行操作(insert, delete, update),那么将返回操作所影响的记录条数。对于其他类型的语句,返回值为-1.如果发生回滚,返回值也为-1.
ExecuteScalar()
执行命令对象的SQL语句,如果是select,则仅返回查询结果集中的第一行第一列,而忽略其他的行和列。该方法返回的结果为object类型,在使用之前必须强制转换为所需类型。如果sql语句不是select,则返回未实例化对象,因为对象未实例化,所以返回结果不能ToString(),不能Equals(null),即返回结果没有任何作用。当只需返回一个单独的数据元时,则可以使用此方法来提高代码的性能,常用于执行聚合函数。
ExecuteReader()
如果是select,返回查询结果的集合,类型是DataReader(OleDbDataReader, SqlDataReader, OracleDataReader等)。它提供了“游水”式的执行方式,即从结果中读取一行之后,移动到另一行,前一行无法再用。有一点需要注意的是,要等到手动调用Read()方法之后,DataReader对象才会移动到结果集的第一行,同时此方法也返回一个bool值,true表示下一行可用,false表示到达结果集末尾。
如果不是select语句,则返回一个没有任何数据的DataReader类型的集合(EOF)。
使用DataReader可以提高执行效率,有两种方式可以提高代码的性能:一是基于序号的查找,一是使用适当的Get方法查找。因为查询出来的结果一般都不会改变,除非再次改动查询语句,因此可以通过定位列的位置来查找记录。用这种方法有一个问题,有可能知道一列的名称而不知其所在的位置,可以通过DataReader的GetOrdinal()方法,次方法接收一个列名并返回此列名所在的列号。
实例
1、 增加新的记录
private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();’打开数据库
MyCommand1.CommandText = "insert into admin values(‘aaddq‘,‘as‘,‘ss‘)";
MyCommand1.Connection = MyConnection;
MyCommand1.ExecuteNonQuery();’由于增加了一条记录,所以返回1
//或者MyCommand1.ExecuteReader();先增加一条记录,然后返回一个
System.Data.OleDb.OleDbDataReader类型的对象,该对象为:EOF
//或者MyCommand1. ExecuteScalar();先增加一条记录,返回未实列化的对象
MyConnection.Close();
}
2、 删除现有数据
private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();’打开数据库
MyCommand1.CommandText = "delete * from admin";
MyCommand1.Connection = MyConnection;
MyCommand1.ExecuteNonQuery();’由于删除了n条记录,所以返回n
//或者MyCommand1.ExecuteReader();先删除n条记录,然后返回一个System.Data.OleDb.OleDbDataReader类型的对象,该对象为:EOF
//或者MyCommand1. ExecuteScalar();先删除n条记录,返回未实列化的对象
MyConnection.Close();
}
3、 修改现有数据
private void Page_Load(object sender, System.EventArgs e)
{
MyConnection.Open();’打开数据库
MyCommand1.CommandText = "update admin set admin_code=’212’,Admin_pwd=’43’ where admin_code=’23’";
MyCommand1.Connection = MyConnection;
MyCommand1.ExecuteNonQuery();’由于修改了1条记录,所以返回n
//或者MyCommand1.ExecuteReader();先修改了1条记录,然后返回一个System.Data.OleDb.OleDbDataReader类型的对象,该对象为:EOF
//或者MyCommand1. ExecuteScalar();先修改了1条记录,返回未实列化的对象
MyConnection.Close();
}
- ExecuteNonQuery、ExecuteScalar、ExecuteReader区别
- ExecuteNonQuery()返回值
- 三兄妹感情再遇波折,人设接连崩塌 《以家人之名》剧情猜不透(三兄妹感情再遇波折)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
热门推荐
- python淘宝秒杀教程(Python实现京东秒杀功能代码)
- js return false的作用
- Visual Studio 编译中活动平台AnyCPU
- python栈和队列(Python 实现数据结构中的栈队列)
- windowsmysql服务在哪里(解决windows service 2012阿里云服务器在搭建mysql时缺少msvcr100.dll文件的问题)
- Sql Server锁的粒度
- mysql如何使用临时表(MySQL中临时表的使用示例)
- docker离线安装步骤(Windows下Docker安装各种软件的详细过程)
- 使用canvas画个正方形(canvas小画板之平滑曲线的实现)
- win10下安装mysql8.0.23 及 “服务没有响应控制功能”问题解决办法(win10下安装mysql8.0.23 及 “服务没有响应控制功能”问题解决办法)