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

ExecuteScalar执行查询语句,返回SQL语句返回的表中第一行第一列的数据。所以我们尽量写SQL语句的时候就仅返回一行一列的结果,让结果更具确定性。

语法为:

ExecuteScalar(SQLString,UseIndependenceConnection) '这里命令类型为Text,参数默认为空

ExecuteScalar(SQLString,cmdtype,UseIndependenceConnection) '这里参数默认为空

ExecuteScalar(SQLString,sqlParms,UseIndependenceConnection) '这里命令类型为Text

ExecuteScalar(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<object>。

ExecuteScalarAsync(SQLString,UseIndependenceConnection) '这里命令类型为Text,参数默认为空

ExecuteScalarAsync(SQLString,cmdtype,UseIndependenceConnection) '这里参数默认为空

ExecuteScalarAsync(SQLString,sqlParms,UseIndependenceConnection) '这里命令类型为Text

ExecuteScalarAsync(SQLString,cmdtype,sqlParms,UseIndependenceConnection)

Vb.Net
Dim db As Database=Proj.SysDataFactory("UserDB")
Dim strSQL As String="select Count(*) from EmployeeInfo"
'示例1:执行没有返回值的SQL
Dim intCount As Integer=db.ExecuteScalar(strSQL)
Proj.MsgDebug.Add("符合条件的共{0}条数据。",intCount)

'示例2:执行带参数的SQL语句
'创建一个匿名对象,保存参数
Dim para = New With {.ID = "U000000003"}
Dim intRun As Integer=db.ExecuteScalar("select Count(*) from EmployeeInfo Where EmployeeID=@ID",CommandType.Text,para)
Proj.MsgDebug.Add("符合条件的共{0}条数据。",intRun)

C#
Database db = Proj.SysDataFactory["UserDB"];
string strSQL = "select Count(*) from EmployeeInfo";
// 示例1:执行没有返回值的SQL
int intCount = db.ExecuteScalar(strSQL).CType<int>();
Proj.MsgDebug.Add("符合条件的共{0}条数据。", intCount);

// 示例2:执行带参数的SQL语句
// 创建一个匿名对象,保存参数
var para = new { ID = "U000000003" };
int intRun = db.ExecuteScalar("select Count(*) from EmployeeInfo Where EmployeeID=@ID", CommandType.Text, para).CType<int>();
Proj.MsgDebug.Add("符合条件的共{0}条数据。", intRun);