Previous topicNext topic
Help > 开发指南 > SanMuGrid平台编程 > 主要对象 > Database > ADO数据处理 >
ExecuteNonQuery

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型枚举包括以下可选值:

public enum CommandType
{
    //SQL文本
    Text = 1,
    //存储过程
    StoredProcedure = 4,
    //单单是表名
    TableDirect = 512
}

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);
    }
}