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 exception            if(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 assigned                        if ((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方法最简单的介绍和示例。

更多相关文章

  1. c语言goto语句用法
  2. c语言输出语句是什么
  3. c语言可以直接对硬件进行操作吗
  4. 用c程序实现的算法必须要有输入个输出操作吗
  5. c语言if语句格式是什么?
  6. 学编程应该知道的c语言中的复数操作
  7. c语言中的语句之间必须用分号作为分隔符吗?
  8. 详解C语言中的复数操作
  9. c语言每条语句以什么结束

随机推荐

  1. 浅谈 MVP in Android
  2. 史上最全的Android文章精选合集
  3. Android(安卓)虚拟机常用快捷键
  4. 使用LinearLayout线性布局编写左上右上左
  5. Google 地图 API for Android
  6. 辅助功能 AccessibilityService笔记
  7. Android(安卓)Studio:依赖包的版本号
  8. 感受LiveData 与 ViewModel结合之美
  9. android RelativeLayout 动态添加子View
  10. PMS/AMS剖析之应用开机自启动