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

ExecuteDataTableHelp执行查询语句,返回DataTableHelp对象。

语法为:

ExecuteDataTableHelp(SQLString,FillSchema,fillData,UseIndependenceConnection)

ExecuteDataTableHelp(SQLString,cmdtype,sqlParms,FillSchema,fillData,UseIndependenceConnection)

参数名称  说明
SQLString 字符串类型,必填,Sql语句。
cmdtype

必填参数,CommandType枚举值之一,指定SQL语句的命令类型。CommandType型枚举包括以下可选值:

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

sqlParms 可选参数,sql语句中使用的参数对象。支持字典Dictionary(string,object)、IEnumerable(DbParameter)、匿名对象。默认为空,
FillSchema

可选参数,逻辑型,表示是否填充表结构。如果是基础数据表,表中有主键的话,填充表结构可以方便我们用Save方法直接保存数据修改。如果表中没有主键,或者SQL命令填充的是视图,则此参数只能填充为False。默认值为False。

fillData 可选参数,逻辑型,表示是否填充加载数据。如果想要把SQL语句中返回的表加载上就输入True,如果只想加载一个空表,则填False,默认值为True。
UseIndependenceConnection 可选参数,逻辑型,是否使用独立连接处理。如果在一个事务中使用此方法,请传入False。正常情况下单独使用时直接传入True即可。默认值为True.

为了提升开发效率,我们还提供了此方法的异步版本,参数和上面的同步版本是一样的,只是返回对象为Task<DataTableHelp>。

ExecuteDataTableHelpAsync(SQLString,FillSchema,fillData,UseIndependenceConnection)

ExecuteDataTableHelpAsync(SQLString,cmdtype,sqlParms,FillSchema,fillData,UseIndependenceConnection)

Vb.Net
Dim db As Database=Proj.SysDataFactory("UserDB")
Dim strSQL As String="select * from EmployeeInfo"
'示例1:最基础的返回一个表,只用于查询
Dim dt As DataTableHelp=db.ExecuteDataTableHelp(strSQL)
If dt IsNot Nothing AndAlso dt.DataRows.Count>0 Then
    For Each dr As RowData In dt.DataRows
        Proj.MsgDebug.Add("第一列内容:{0}",dr(1))
    Next
End If

'示例2:如果我们想前期只加载一个空表,然后经过其他操作加载后再根据条件加载相应的数据
dt=db.ExecuteDataTableHelp(strSQL,True,False) '第二个参数控制是否填充表结构,方便控制是否正常保存。第三个参数控制是否填充数据
'这里可以是其他加载信息
'我们再根据情况按需加载
dt.LoadFilter="FullName='陈某'"
dt.Load
'如果根据条件加载到了数据
If dt IsNot Nothing AndAlso dt.DataRows.Count>0 Then
    Dim dr As RowData=dt.DataRows(0)
    dr("Nation")="汉族"
    dt.Save()
End If

'示例3:带参数的SQL返回
'创建一个匿名对象,保存参数
Dim para = New With {.ID = "U000000003"}
'直接执行存储过程
dt=db.ExecuteDataTableHelp("select * from UserInfo where ID=@ID",CommandType.Text,para)
If dt IsNot Nothing AndAlso dt.DataRows.Count>0 Then
    Proj.MsgDebug.Add("返回结果共{0}条数据",dt.DataRows.Count)
End If

'示例4:执行存储过程
'创建一个匿名对象,保存参数
Dim para = New With {.ID = "U000000003",.Name="Jimmy"}
'直接执行存储过程
dt=db.ExecuteDataTableHelp("GetEmployeeInfoByID",CommandType.StoredProcedure,para)
If dt IsNot Nothing AndAlso dt.DataRows.Count>0 Then
    Proj.MsgDebug.Add("返回结果共{0}条数据",dt.DataRows.Count)
End If

'示例5:如果是执行一个没有参数的存储过程
dt=db.ExecuteDataTableHelp("GetEmployeeInfoByID",CommandType.StoredProcedure,Nothing)

C#
Database db = Proj.SysDataFactory["UserDB"];
string strSQL = "select * from EmployeeInfo";
// 示例1:最基础的返回一个表,只用于查询
DataTableHelp dt = db.ExecuteDataTableHelp(strSQL);
if (dt != null && dt.DataRows.Count > 0)
{
    foreach (RowData dr in dt.DataRows)
    {
        Proj.MsgDebug.Add("第一列内容:{0}", dr[1].ToString());
    }
}

// 示例2:如果我们想前期只加载一个空表,然后经过其他操作加载后再根据条件加载相应的数据
dt = db.ExecuteDataTableHelp(strSQL, true, false); // 第二个参数控制是否填充表结构,方便控制是否正常保存。第三个参数控制是否填充数据
// 这里可以是其他加载信息
// 我们再根据情况按需加载
dt.LoadFilter = "FullName='陈某'";
dt.Load();
// 如果根据条件加载到了数据
if (dt != null && dt.DataRows.Count > 0)
{
    RowData dr = dt.DataRows[0];
    dr["Nation"] = "汉族";
    dt.Save();
}

// 示例3:带参数的SQL返回
// 创建一个匿名对象,保存参数
var para = new { ID = "U000000003" };
// 直接执行存储过程
dt = db.ExecuteDataTableHelp("select * from UserInfo where ID=@ID", CommandType.Text, para);
if (dt != null && dt.DataRows.Count > 0)
    Proj.MsgDebug.Add("返回结果共{0}条数据", dt.DataRows.Count);

// 示例4:执行存储过程
// 创建一个匿名对象,保存参数
var para = new { ID = "U000000003", Name = "Jimmy" };
// 直接执行存储过程
dt = db.ExecuteDataTableHelp("GetEmployeeInfoByID", CommandType.StoredProcedure, para);
if (dt != null && dt.DataRows.Count > 0)
    Proj.MsgDebug.Add("返回结果共{0}条数据", dt.DataRows.Count);

// 示例5:如果是执行一个没有参数的存储过程
dt = db.ExecuteDataTableHelp("GetEmployeeInfoByID", CommandType.StoredProcedure, null);