executenonquery 的用法详解
技术  /  管理员 发布于 7年前   168
executenonquery 的用法详解
C#中操作数据库技术之ExecuteNonQuery用法
最近在补基础知识,刚好补到C#中对数据库操作的一些技术,今天学习了ExecuteNonQuery的东西,看自己项目维护项目的代码和网上资料查询,基本上搞懂了ExecuteNonQuery的用法,小小的做个总结,供以后查阅。
ExecuteNonQuery方法主要用来更新数据,当然也可以用来执行目标操作(例如查询数据库的结构或者创建诸如表等的数据库对象)。通常用它来执行insert、update、delete语句,在不使用Dataset的情况下更改数据库中的数据。select语句不适合ExecuteNonQuery()方法。
推荐《C++视频教程》
一、首先,来看看ExecuteNonQuery的返回值:
1. 对于Update、insert、Delete语句执行成功是返回值为该命令所影响的行数,如果影响的行数是0,则返回值就是0;
2. 对于所有其他类型的语句,返回值为-1;
3. 如果发生回滚,返回值也为-1;
4. 我们一般对于更新操作,通过判断返回值是否大于0,这个是没有问题的。但是对于其他的操作【如对数据结构的操作(建表等)】如果操作成功返回值却是-1,但是要注意一下啊,例如给数据库添加一个新表,创建成功返回-1,如果操作失败就会发生异常,所有执行这种操作最好用Try,Catch语句来捕捉异常。
二、 command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,步骤如下:
1. 创建数据库连接;
2. 创建Command对象,并指定一个SQL Inser、Update、Delete查询或者存储过程;
3. 把Command对象依附到数据库连接上;
4. 调用ExecuteNonQuery()方法;
5. 关闭连接。
三、代码示例使用方法:
1. 首先是一个很简单的类,里面提供了如何用command对象通过ExecuteNonQuery方法跟新数据库。
public class ExecuteNonQueryClas { private static string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; //as this method provided static method, set the constructor to priviate to prevent create instance with 'new ExecuteNonQuery()' private ExecuteNonQueryClas() { } public static int ExecuteNonQuery(string commandText) {return ExecuteNonQuery(commandText, (SqlParameter[])null); } public static int ExecuteNonQuery(string commandText,SqlParameter[] commandParams) {//if connectionString is null, then throw exceptionif(connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");using(SqlConnection conn = new SqlConnection(connectionString)){ SqlCommand cmd = new SqlCommand(commandText,conn); if (conn.State != ConnectionState.Open) conn.Open(); //check if the commandParams is not null, then attach params to command if(commandParams !=null) AttachParameters(cmd,commandParams); int recordsAffected = cmd.ExecuteNonQuery(); return recordsAffected;} } private static void AttachParameters(SqlCommand cmd,SqlParameter[] commandParams) {if (cmd == null) throw new ArgumentException("command");if (commandParams != null){ foreach (SqlParameter p in commandParams) { if (p != null) {//// Check for derived output value with no value assignedif ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) && (p.Value == null)){ p.Value = DBNull.Value;}cmd.Parameters.Add(p); } }} } }
2. 在主函数中的调用:
static void Main(string[] args) {string userName = Console.ReadLine();string loginId = "user";string sqlString = "update Users set UserName = @name where LoginID= @loginID";SqlParameter[] parms ={ new SqlParameter("@name",userName), new SqlParameter("@loginID",loginId) };int rlt = ExecuteNonQueryClas.ExecuteNonQuery(sqlString,parms);Console.WriteLine(rlt);Console.Read(); }
好啦, 上面就是使用ExecuteNonQuery方法最简单的介绍和示例。
以上就是executenonquery 的用法详解的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号