A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩俊 中级黑马   /  2012-11-20 22:11  /  1916 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ExecuteNonQuery();ExecuteReader();ExecuteScalar();求三个用法和何时才用详解?

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

6 个回复

倒序浏览
查询:
ExecuteScalar()可以执行SELECT查询,返回的是一个单值
步骤如下:
(1)创建Connection对象(数据库连接对象):SqlConnection  对象名 = new SqlConnection(连接字符串);
(2)创建查询用的SQL语句。
(3)利用SQL语句和Connection对象来创建Command对象:SqlCommand  对象名 = new SqlCommand(SQL语句, Connection对象);
(4)调用Connection对象的Open()方法,打开数据库连接,Connection对象.Open();
(5)调用Command对象的ExecuteScalar()方法,返回一个值, int  i  = Command对象.ExecuteScalar();
(6)操作完成后调用Connection对象的Close()方法,关闭数据库连接,  Connection对象.Close();
  ExecuteReader()返回一个Datareader对象。如:
  SqlDataReader reader = cmd.ExecuteReader();
  while (reader.Read()) {}


非查询操作:
对数据库执行非查询操作时,包括增加、修改、删除数据,都使用Command对象的ExecuteNonQuery()方法,步骤如下:
(1)创建Connection对象(数据库连接对象)。
(2)创建增删改用的SQL语句。
(3)利用SQL语句和Connection对象来创建Command对象。
(4)调用Connection对象的Open()方法,打开数据库连接。
(5)调用Command对象的ExecuteNonQuery ()方法执行命令,返回受影响的行数。
(6)操作完成后调用Connection对象的Close()方法,关闭数据库连接。

  SqlConnection  对象名 = new SqlConnection(连接字符串);
  Connection.Open();
  SqlCommand  对象名 = new SqlCommand(SQL语句, Connection对象名);
  Command 对象名.ExecuteNonQuery();
  int  i  = Command 对象名.ExecuteNonQuery();

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
ExecuteNonQuery执行增删改命令。返回受影响的数据(insert、delete、Update)
ExecuteReader返回一个 DataReader 对象。
ExecuteScalar返回数据库查询出来的第一行第一列。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
1. ExecuteNonQuery方法是用来执行insert、delete、update语句的,由于这些语句执行后只有一个结果:“影响了**行”,所以ExecuteNonQuery方法返回的是影响的行数(int)。ExecuteNonQuery() 这个方法并不返回一个DataReader对象,而是返回一个int类型的值,即在执行之后在数据库中所影响的行数。
2.执行有多行结果集的用ExecuteReader
  SqlDataReader reader = cmd.ExecuteReader();
   while(reader.Read())
   {
           Console.WriteLine(reader.GetString(1));
   }
3. SqlCommand的ExecuteScalar方法用于执行查询,并返回查询所返回的结果集中第一行的第一列,因为不能确定返回值的类型,所以返回值是object类型
    cmd.CommandText = "select count(*) from T_User";
    int i = Convert.ToInt32(cmd.ExecuteScalar())
   

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
ExecuteNonQuery();
SqlCommand的ExecuteScalar方法用于执行查询,并返回查询中所返回的结果集第一行第一列,因为不能确定返回值类型,所以返回值是object类型。一般情况下在SELECT COUNT(*) 才用ExecuteScalar()
    例1:获取员工的总人数
    cmd.commandText=”select count(*) from T_Uers”;
    int i=Convert.ToInt32(cmd.ExecuteScalar);
    例2:获取当前的日期
    cmd.commandText=”select getdate()”;
    DateTime   dt=Convert.ToDateTime(cmd.ExecuteScalar());
ExecuteScalar();
SqlCommand的ExecuteScalar方法用于执行查询,并返回查询中所返回的结果集第一行第一列,因为不能确定返回值类型,所以返回值是object类型。一般情况下在SELECT COUNT(*) 才用ExecuteScalar()
    例1:获取员工的总人数
    cmd.commandText=”select count(*) from T_Uers”;
    int i=Convert.ToInt32(cmd.ExecuteScalar);
    例2:获取当前的日期
    cmd.commandText=”select getdate()”;
    DateTime   dt=Convert.ToDateTime(cmd.ExecuteScalar());
回复 使用道具 举报
韩温华 发表于 2012-11-21 16:44
ExecuteNonQuery();
SqlCommand的ExecuteScalar方法用于执行查询,并返回查询中所返回的结果集第一行第一 ...

不好意思楼上ExcuteNonQuery()用法:
SqlCommand表示向服务器提交一个命令(SQL语句等)
      CommandText为要执行的语句,ExecuteNonQuery方法执行一个非查询语句(update,Insert,Delete)等,返回的是执行的影响行数
用using进行管理,代码如下:
using(SqlCommand  cmd=conn.CreateCommand())
{
   cmd.CommandText=”Insert  into  T_Users(UserName,Password)   values  (‘admin’,’88888’)”;
  cmd.ExecuteNonQuery();
}
刚刚在word中总结过的

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
ExecuteNonQuery方法 :执行非查询SQL操作,包括增insert、删delete、改update
ExcuteReader方法 :执行查询,返回DataReader,通过DataReader的对象dr["列名"]
可以取得数据,一次读一行,可以通过while(dr.Read())进行循环读取
ExecuteScalar方法 :执行查询,只返回一个数据
在连接SQL Server数据库:首先创建SqlConnection类和SqlCommand类实例分别用于连接到SQL Server数据库和执行SQL语句命令,然后打开数据连接并使用SqlCommand的相应方法执行SQL语句。
ExecuteNonQuery()方法执行SQL语句并且不返回数据;
ExecuteReader()方法将SQL语句发送给SqlConnection并生产一个SqlDataReader类对象,该SqlDataReader对象包含SQL命令返回的数据;
ExecuteScalar()方法执行SQl查询,并返回查询结果集中的第一行的第一列,忽略额外的列或行!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马