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

ExecuteDataTable执行查询语句,返回DataTable对象。因为DataTable对象在本平台中使用的不多,所以此方法我们平时用到的也不多。

语法为:

ExecuteDataTable(SQLString,FillSchema,fillData,UseIndependenceConnection)

ExecuteDataTable(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<DataTable>。

ExecuteDataTableAsync(SQLString,FillSchema,fillData,UseIndependenceConnection)

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

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

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

'我们可以很轻易地根据DataTable对象获得对应的DataTableHelp对象。
Dim dtt As DataTableHelp=dt.GetDataTableHelp()

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

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

// 我们可以很轻易地根据DataTable对象获得对应的DataTableHelp对象。
DataTableHelp dtt = dt.GetDataTableHelp();