ADO.NET知识总结3---SqlCommand命令对象

发布于:2025-02-10 ⋅ 阅读:(51) ⋅ 点赞:(0)

 

目录

4.1 SqlCommand对象介绍

4.2 SqlCommand创建

4.3 Command执行方法


4.1 SqlCommand对象介绍

SqlCommand:Ado.Net中执行数据库命令的对象。
它对SQLServer数据库执行一个T-SQL语句或存储过程

重要属性:

Connection: SqlCommand对象使用的SqlConnection对象

CommandText: 获取或设置要执行的T-SQL语句或存储过程名

CommandType: 要执行的命令的类型

CommandType.Text--执行的是一个Sql语句

CommandType.StoredProcedure --执行的是一个存储过程

Parameters: SqlCommand对象的命令参数集合

Transaction: 获取或设置要在其中执行的事务

4.2 SqlCommand创建

创建SqlCommand命令对象,有多种方式。

SqlConnection conn=new SqlConnection(connStr);
String sqll="select * from UserInfos";

方式一:

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;

方式二:

SqlCommand cmd = new SqlCommand(sql);
cmd.Connection = conn;

方式三:(推荐)

SqlCommand cmd = new SqlCommand(sql, conn);

方式四:

SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;

4.3 Command执行方法

Command对象有三个执行方法

ExecuteNonQuery() 返回受影响的行数 (适用于:insert update delete)-----对应增、改、删操作

string sql="........";//Sql语句一般是insert/update/delete语句
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

ExecuteScalar() 执行查询语句,返回第一行第一列的值 返回类型:object ----- 对应:查询数据,返回一个值的情况

string sql="........";//Sql语句必须包含是select语句
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
object oVal=cmd.ExecuteScalar();
conn.Close();

ExecuteReader() 执行查询语句,返回SqlDataReader数据流 对应:查询数据(只读不改

string sql="........";//Sql是select语句
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader dr=cmd.ExecuteReader();//无参方法,后面必须显式关闭dr和conn
List<UserInfo> list=new List<UserInfo>();
while(dr.Read())
{
    UserInfo user=new User();
    //读取过程
    user.UserId=(int)dr["UserId"];
    user.UserName=dr["UserName"].ToString();
    list.Add(user);
}
dr.Close();
conn.Close();

//如果用带参的方法
SqlDataReader dr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
List<UserInfo> list=new List<UserInfo>();
while(dr.Read())
{
    UserInfo user=new User();
    //读取过程
    user.UserId=(int)dr["UserId"];
    user.UserName=dr["UserName"].ToString();
    list.Add(user);
}
dr.Close();//这里只须关闭dr,与之相关的conn也会关闭

使用ExecuteReader()注意:

1.即时存储 ---- 只进式数据流,不能向前翻

2.关闭

不带参数的ExecuteReader,关闭dr,并不会关闭连接;

带参数的ExecuteReader,关闭dr,就会关闭连接;关闭连接也会关闭dr

以上三个执行方法的**共同点**:执行时,连接**必须处于打开状态**。


网站公告

今日签到

点亮在社区的每一天
去签到