ExecuteNonQuery执行SQL语句,返回SQL语句执行后成功修改数据的数量。一般情况下我们可以在这里执行一些不需要返回数据的SQL或者存储过程。如果希望接受返回数据的请其他其他方法。
语法为:
ExecuteNonQuery(SQLString,UseIndependenceConnection) '这里命令类型为Text,参数默认为空
ExecuteNonQuery(SQLString,cmdtype,UseIndependenceConnection) '这里参数默认为空
ExecuteNonQuery(SQLString,sqlParms,UseIndependenceConnection) '这里命令类型为Text
ExecuteNonQuery(SQLString,cmdtype,sqlParms,UseIndependenceConnection)
参数名称 | 说明 | |
SQLString | 字符串类型,必填,Sql语句。 | |
cmdtype |
必填参数,CommandType枚举值之一,指定SQL语句的命令类型。CommandType型枚举包括以下可选值:
| |
sqlParms | 可选参数,sql语句中使用的参数对象。支持字典Dictionary(string,object)、IEnumerable(DbParameter)、匿名对象。默认为空, | |
UseIndependenceConnection | 可选参数,逻辑型,是否使用独立连接处理。如果在一个事务中使用此方法,请传入False。正常情况下单独使用时直接传入True即可。默认值为True. |
为了提升开发效率,我们还提供了此方法的异步版本,参数和上面的同步版本是一样的,只是返回对象为Task<int>。
ExecuteNonQueryAsync(SQLString,UseIndependenceConnection)
ExecuteNonQueryAsync(SQLString,cmdtype,UseIndependenceConnection)
ExecuteNonQueryAsync(SQLString,sqlParms,UseIndependenceConnection)
ExecuteNonQueryAsync(SQLString,cmdtype,sqlParms,UseIndependenceConnection)
Vb.Net |
Dim db As Database=Proj.SysDataFactory("UserDB") Dim strSQL As String="delete from EmployeeInfo where EmployeeID='U000000004'" '示例1:执行没有返回值的SQL Dim intCount As Integer=db.ExecuteNonQuery(strSQL) Proj.MsgDebug.Add("SQL语句成功更新{0}条数据。") '示例2:执行带参数的SQL语句 '创建一个匿名对象,保存参数 Dim para = New With {.ID = "U000000003"} Dim intRun As Integer=db.ExecuteNonQuery("update EmployeeInfo set FullName='NewName' Where EmployeeID=@ID",CommandType.Text,para) If intRun>0 Then Proj.MsgDebug.Add("执行命令成功!") End If '示例3:在事务处理中,UseIndependenceConnection必须设置为False '先定义变量获取表 Dim tbl As SmGrid = Proj.CurrentSmGrid '判断一下当前选择区域是否有数据 If rng.IsValid AndAlso rng.r1 >= tbl.Rows.Fixed Then Try '开始进入事务 db.BeginTrans() '遍历选择区域的每一行 For j As Integer = rng.r1 To rng.r2 Dim dr As RowData = tbl.Rows(j).GetRowData() '判断当前是否为绑定行 If dr IsNot Nothing Then Dim Djh As String = dr("Djlsh").ToString() '执行代码,注意第二个参数一定要设置为False才可以正确启动事务 db.ExecuteNonQuery("UPDATE spdaH SET spbs=(select zhxbs from spbszhH where Djlsh='" & Djh & "') where spbh=(select spbh from spbszhH where Djlsh='" & Djh & "')",False) End If Next '提交事务,让所有SQL执行正式生效 db.CommitTrans() Catch ex As Exception '出错时回滚事务 db.RollbackTrans() '弹出异常信息,并记录日志当中。 UnhandledExceptionManager.ShowAndSaveLog(ex) End Try End If |
C# |
Database db = Proj.SysDataFactory["UserDB"]; string strSQL = "delete from EmployeeInfo where EmployeeID='U000000004'"; // 示例1:执行没有返回值的SQL int intCount = db.ExecuteNonQuery(strSQL); Proj.MsgDebug.Add("SQL语句成功更新{0}条数据。"); // 示例2:执行带参数的SQL语句 // 创建一个匿名对象,保存参数 var para = new { ID = "U000000003" }; int intRun = db.ExecuteNonQuery("update EmployeeInfo set FullName='NewName' Where EmployeeID=@ID", CommandType.Text, para); if (intRun > 0) Proj.MsgDebug.Add("执行命令成功!"); // 示例3:在事务处理中,UseIndependenceConnection必须设置为False // 先定义变量获取表 SmGrid tbl = Proj.CurrentSmGrid; // 判断一下当前选择区域是否有数据 if (rng.IsValid && rng.r1 >= tbl.Rows.Fixed) { try { // 开始进入事务 db.BeginTrans(); // 遍历选择区域的每一行 for (int j = rng.r1; j <= rng.r2; j++) { RowData dr = tbl.Rows[j].GetRowData(); // 判断当前是否为绑定行 if (dr != null) { string Djh = dr["Djlsh"].ToString(); // 执行代码,注意第二个参数一定要设置为False才可以正确启动事务 db.ExecuteNonQuery("UPDATE spdaH SET spbs=(select zhxbs from spbszhH where Djlsh='" + Djh + "') where spbh=(select spbh from spbszhH where Djlsh='" + Djh + "')", false); } } // 提交事务,让所有SQL执行正式生效 db.CommitTrans(); } catch (Exception ex) { // 出错时回滚事务 db.RollbackTrans(); // 弹出异常信息,并记录日志当中。 UnhandledExceptionManager.ShowAndSaveLog(ex); } } |