提交 5798ecaa 编写于 作者: s0611163's avatar s0611163

IDbSession接口新增查询并返回DataTable的方法

上级 fdf1eb86
......@@ -814,5 +814,106 @@ namespace LiteSql
}
#endregion
#region 查询并返回DataTable
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
public DataTable QueryDataTable(string sqlString)
{
var conn = GetConnection(_tran);
try
{
var reader = ExecuteReader(sqlString, conn);
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
finally
{
if (_tran == null)
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
public async Task<DataTable> QueryDataTableAsync(string sqlString)
{
var conn = GetConnection(_tran);
try
{
var reader = await ExecuteReaderAsync(sqlString, conn);
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
finally
{
if (_tran == null)
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>IDataReader</returns>
public DataTable QueryDataTable(string sqlString, DbParameter[] cmdParms)
{
var conn = GetConnection(_tran);
try
{
var reader = ExecuteReader(sqlString, cmdParms, conn);
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
finally
{
if (_tran == null)
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>IDataReader</returns>
public async Task<DataTable> QueryDataTableAsync(string sqlString, DbParameter[] cmdParms)
{
var conn = GetConnection(_tran);
try
{
var reader = await ExecuteReaderAsync(sqlString, cmdParms, conn);
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
finally
{
if (_tran == null)
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
}
#endregion
}
}
......@@ -151,6 +151,34 @@ namespace LiteSql
#endregion
#region 查询并返回DataTable
/// <summary>
/// 执行查询语句,返回DbDataReader
/// </summary>
DataTable QueryDataTable(string sqlString);
/// <summary>
/// 执行查询语句,返回DbDataReader
/// </summary>
Task<DataTable> QueryDataTableAsync(string sqlString);
/// <summary>
/// 执行查询语句,返回DbDataReader
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>IDataReader</returns>
DataTable QueryDataTable(string sqlString, DbParameter[] cmdParms);
/// <summary>
/// 执行查询语句,返回DbDataReader
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>IDataReader</returns>
Task<DataTable> QueryDataTableAsync(string sqlString, DbParameter[] cmdParms);
#endregion
#region SqlString
/// <summary>
......
......@@ -515,5 +515,30 @@ namespace LiteSqlTest
}
#endregion
#region 测试查询并返回DataTable
[TestMethod]
public void TestReturnDataTable()
{
var session = LiteSqlFactory.GetSession();
session.OnExecuting = (s, p) =>
{
Console.WriteLine(s);
};
var sql = session.Sql("select * from sys_user where id<=@Id", 20);
DataTable dt = session.QueryDataTable(sql.SQL, sql.Params);
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine($"{dr["user_name"]}, {dr["real_name"]}, {dr["remark"]}");
}
Assert.IsTrue(dt.Rows.Count > 0);
var list = sql.ToList<dynamic>();
Assert.IsTrue(list.Count > 0);
}
#endregion
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册