...
 
Commits (4)
    https://gitcode.net/s0611163/LiteSql/-/commit/5a45c619ef65d42cfdfaeddc96796e3b169a0519 IDbSession接口增加SetCommandType方法,以支持调用存储过程 2023-12-08T13:45:29+08:00 suxiang 651029594@qq.com https://gitcode.net/s0611163/LiteSql/-/commit/fdf1eb86b3c9c1995187cb6108237bb4a5efc8d0 删除多余的OnExecuting调用 2023-12-08T13:58:20+08:00 suxiang 651029594@qq.com https://gitcode.net/s0611163/LiteSql/-/commit/5798ecaa8ecd693fb4cef7ba0a248f56738a7119 IDbSession接口新增查询并返回DataTable的方法 2023-12-08T15:31:05+08:00 suxiang 651029594@qq.com https://gitcode.net/s0611163/LiteSql/-/commit/5e01ac7626a27fe605ac2eaedd4531197381d298 v2.0.12 2023-12-08T15:47:36+08:00 suxiang 651029594@qq.com
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
<Nullable>disable</Nullable> <Nullable>disable</Nullable>
<GenerateDocumentationFile>True</GenerateDocumentationFile> <GenerateDocumentationFile>True</GenerateDocumentationFile>
<Title>LiteSql</Title> <Title>LiteSql</Title>
<AssemblyVersion>2.0.11</AssemblyVersion> <AssemblyVersion>2.0.12</AssemblyVersion>
<FileVersion>2.0.11</FileVersion> <FileVersion>2.0.12</FileVersion>
<Version>2.0.11</Version> <Version>2.0.12</Version>
<PackageId>LiteSql</PackageId> <PackageId>LiteSql</PackageId>
<PackageProjectUrl>https://github.com/0611163/LiteSql</PackageProjectUrl> <PackageProjectUrl>https://github.com/0611163/LiteSql</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression> <PackageLicenseExpression>MIT</PackageLicenseExpression>
...@@ -20,7 +20,9 @@ ...@@ -20,7 +20,9 @@
</Description> </Description>
<PackageReleaseNotes> <PackageReleaseNotes>
更新内容: 更新内容:
1. QueryList<T>中的T支持各值类型完善 1. 新增:IDbSession接口增加SetCommandType方法,以支持调用存储过程
2. 优化:删除重复的OnExecuting调用
3. 新增:IDbSession接口新增查询并返回DataTable的方法
</PackageReleaseNotes> </PackageReleaseNotes>
</PropertyGroup> </PropertyGroup>
......
...@@ -85,6 +85,8 @@ namespace LiteSql ...@@ -85,6 +85,8 @@ namespace LiteSql
/// </summary> /// </summary>
public DbConnection Conn => _tran?.Connection; public DbConnection Conn => _tran?.Connection;
private CommandType _commandType = CommandType.Text;
#endregion #endregion
#region 静态构造函数 #region 静态构造函数
...@@ -253,5 +255,16 @@ namespace LiteSql ...@@ -253,5 +255,16 @@ namespace LiteSql
} }
#endregion #endregion
#region 设置CommandType
/// <summary>
/// 设置CommandType
/// </summary>
public IDbSession SetCommandType(CommandType commandType)
{
_commandType = commandType;
return this;
}
#endregion
} }
} }
...@@ -46,8 +46,6 @@ namespace LiteSql ...@@ -46,8 +46,6 @@ namespace LiteSql
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}={2}", GetTableName(_provider, type), idNameWithQuote, _provider.GetParameterName(idName, idType))); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}={2}", GetTableName(_provider, type), idNameWithQuote, _provider.GetParameterName(idName, idType)));
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return Execute(sbSql.ToString(), cmdParms); return Execute(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -89,8 +87,6 @@ namespace LiteSql ...@@ -89,8 +87,6 @@ namespace LiteSql
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}={2}", GetTableName(_provider, type), idNameWithQuote, _provider.GetParameterName(idName, idType))); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}={2}", GetTableName(_provider, type), idNameWithQuote, _provider.GetParameterName(idName, idType)));
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return await ExecuteAsync(sbSql.ToString(), cmdParms); return await ExecuteAsync(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -121,8 +117,6 @@ namespace LiteSql ...@@ -121,8 +117,6 @@ namespace LiteSql
sbSql.Remove(sbSql.Length - 1, 1); sbSql.Remove(sbSql.Length - 1, 1);
sbSql.Append(")"); sbSql.Append(")");
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return Execute(sbSql.ToString(), cmdParms); return Execute(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -152,8 +146,6 @@ namespace LiteSql ...@@ -152,8 +146,6 @@ namespace LiteSql
sbSql.Remove(sbSql.Length - 1, 1); sbSql.Remove(sbSql.Length - 1, 1);
sbSql.Append(")"); sbSql.Append(")");
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return await ExecuteAsync(sbSql.ToString(), cmdParms); return await ExecuteAsync(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -199,8 +191,6 @@ namespace LiteSql ...@@ -199,8 +191,6 @@ namespace LiteSql
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition)); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition));
OnExecuting?.Invoke(sbSql.ToString(), null);
return Execute(sbSql.ToString(), null); return Execute(sbSql.ToString(), null);
} }
#endregion #endregion
...@@ -218,8 +208,6 @@ namespace LiteSql ...@@ -218,8 +208,6 @@ namespace LiteSql
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition)); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition));
OnExecuting?.Invoke(sbSql.ToString(), null);
return await ExecuteAsync(sbSql.ToString(), null); return await ExecuteAsync(sbSql.ToString(), null);
} }
#endregion #endregion
...@@ -264,8 +252,6 @@ namespace LiteSql ...@@ -264,8 +252,6 @@ namespace LiteSql
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition)); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition));
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return Execute(sbSql.ToString(), cmdParms); return Execute(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -283,8 +269,6 @@ namespace LiteSql ...@@ -283,8 +269,6 @@ namespace LiteSql
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition)); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition));
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return await ExecuteAsync(sbSql.ToString(), cmdParms); return await ExecuteAsync(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
......
...@@ -27,9 +27,6 @@ namespace LiteSql ...@@ -27,9 +27,6 @@ namespace LiteSql
/// </summary> /// </summary>
public bool Exists(string sqlString) public bool Exists(string sqlString)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = ExecuteScalar(sqlString); object obj = ExecuteScalar(sqlString);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -49,9 +46,6 @@ namespace LiteSql ...@@ -49,9 +46,6 @@ namespace LiteSql
/// </summary> /// </summary>
public async Task<bool> ExistsAsync(string sqlString) public async Task<bool> ExistsAsync(string sqlString)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = await ExecuteScalarAsync(sqlString); object obj = await ExecuteScalarAsync(sqlString);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -73,9 +67,6 @@ namespace LiteSql ...@@ -73,9 +67,6 @@ namespace LiteSql
/// <param name="sqlString">查询语句</param> /// <param name="sqlString">查询语句</param>
public T QuerySingle<T>(string sqlString) public T QuerySingle<T>(string sqlString)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = ExecuteScalar(sqlString); object obj = ExecuteScalar(sqlString);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -96,9 +87,6 @@ namespace LiteSql ...@@ -96,9 +87,6 @@ namespace LiteSql
/// <param name="sqlString">查询语句</param> /// <param name="sqlString">查询语句</param>
public object QuerySingle(string sqlString) public object QuerySingle(string sqlString)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = ExecuteScalar(sqlString); object obj = ExecuteScalar(sqlString);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -119,9 +107,6 @@ namespace LiteSql ...@@ -119,9 +107,6 @@ namespace LiteSql
/// <param name="sqlString">查询语句</param> /// <param name="sqlString">查询语句</param>
public async Task<T> QuerySingleAsync<T>(string sqlString) public async Task<T> QuerySingleAsync<T>(string sqlString)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = await ExecuteScalarAsync(sqlString); object obj = await ExecuteScalarAsync(sqlString);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -142,9 +127,6 @@ namespace LiteSql ...@@ -142,9 +127,6 @@ namespace LiteSql
/// <param name="sqlString">查询语句</param> /// <param name="sqlString">查询语句</param>
public async Task<object> QuerySingleAsync(string sqlString) public async Task<object> QuerySingleAsync(string sqlString)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = await ExecuteScalarAsync(sqlString); object obj = await ExecuteScalarAsync(sqlString);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -222,9 +204,6 @@ namespace LiteSql ...@@ -222,9 +204,6 @@ namespace LiteSql
/// </summary> /// </summary>
public bool Exists(string sqlString, DbParameter[] cmdParms) public bool Exists(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = ExecuteScalar(sqlString, cmdParms); object obj = ExecuteScalar(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -244,9 +223,6 @@ namespace LiteSql ...@@ -244,9 +223,6 @@ namespace LiteSql
/// </summary> /// </summary>
public async Task<bool> ExistsAsync(string sqlString, DbParameter[] cmdParms) public async Task<bool> ExistsAsync(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = await ExecuteScalarAsync(sqlString, cmdParms); object obj = await ExecuteScalarAsync(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -269,9 +245,6 @@ namespace LiteSql ...@@ -269,9 +245,6 @@ namespace LiteSql
/// <param name="cmdParms">参数</param> /// <param name="cmdParms">参数</param>
public T QuerySingle<T>(string sqlString, DbParameter[] cmdParms) public T QuerySingle<T>(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = ExecuteScalar(sqlString, cmdParms); object obj = ExecuteScalar(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -293,9 +266,6 @@ namespace LiteSql ...@@ -293,9 +266,6 @@ namespace LiteSql
/// <param name="cmdParms">参数</param> /// <param name="cmdParms">参数</param>
public object QuerySingle(string sqlString, DbParameter[] cmdParms) public object QuerySingle(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = ExecuteScalar(sqlString, cmdParms); object obj = ExecuteScalar(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -317,9 +287,6 @@ namespace LiteSql ...@@ -317,9 +287,6 @@ namespace LiteSql
/// <param name="cmdParms">参数</param> /// <param name="cmdParms">参数</param>
public async Task<T> QuerySingleAsync<T>(string sqlString, DbParameter[] cmdParms) public async Task<T> QuerySingleAsync<T>(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = await ExecuteScalarAsync(sqlString, cmdParms); object obj = await ExecuteScalarAsync(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -341,9 +308,6 @@ namespace LiteSql ...@@ -341,9 +308,6 @@ namespace LiteSql
/// <param name="cmdParms">参数</param> /// <param name="cmdParms">参数</param>
public async Task<object> QuerySingleAsync(string sqlString, DbParameter[] cmdParms) public async Task<object> QuerySingleAsync(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = await ExecuteScalarAsync(sqlString, cmdParms); object obj = await ExecuteScalarAsync(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -603,13 +567,13 @@ namespace LiteSql ...@@ -603,13 +567,13 @@ namespace LiteSql
#endregion #endregion
#region PrepareCommand #region PrepareCommand
private static void PrepareCommand(DbCommand cmd, DbConnection conn, DbTransaction trans, string cmdText, DbParameter[] cmdParms) private void PrepareCommand(DbCommand cmd, DbConnection conn, DbTransaction trans, string cmdText, DbParameter[] cmdParms)
{ {
if (conn.State != ConnectionState.Open) conn.Open(); if (conn.State != ConnectionState.Open) conn.Open();
cmd.Connection = conn; cmd.Connection = conn;
cmd.CommandText = cmdText; cmd.CommandText = cmdText;
if (trans != null) cmd.Transaction = trans; if (trans != null) cmd.Transaction = trans;
cmd.CommandType = CommandType.Text; cmd.CommandType = _commandType;
if (cmdParms != null) if (cmdParms != null)
{ {
foreach (DbParameter parm in cmdParms) foreach (DbParameter parm in cmdParms)
...@@ -621,13 +585,13 @@ namespace LiteSql ...@@ -621,13 +585,13 @@ namespace LiteSql
#endregion #endregion
#region PrepareCommandAsync #region PrepareCommandAsync
private static async Task PrepareCommandAsync(DbCommand cmd, DbConnection conn, DbTransaction trans, string cmdText, DbParameter[] cmdParms) private async Task PrepareCommandAsync(DbCommand cmd, DbConnection conn, DbTransaction trans, string cmdText, DbParameter[] cmdParms)
{ {
if (conn.State != ConnectionState.Open) await conn.OpenAsync(); if (conn.State != ConnectionState.Open) await conn.OpenAsync();
cmd.Connection = conn; cmd.Connection = conn;
cmd.CommandText = cmdText; cmd.CommandText = cmdText;
if (trans != null) cmd.Transaction = trans; if (trans != null) cmd.Transaction = trans;
cmd.CommandType = CommandType.Text; cmd.CommandType = _commandType;
if (cmdParms != null) if (cmdParms != null)
{ {
foreach (DbParameter parm in cmdParms) foreach (DbParameter parm in cmdParms)
...@@ -850,5 +814,106 @@ namespace LiteSql ...@@ -850,5 +814,106 @@ namespace LiteSql
} }
#endregion #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
} }
} }
...@@ -18,9 +18,6 @@ namespace LiteSql ...@@ -18,9 +18,6 @@ namespace LiteSql
/// </summary> /// </summary>
public List<T> QueryList<T>(string sql) public List<T> QueryList<T>(string sql)
{ {
SqlFilter(ref sql);
OnExecuting?.Invoke(sql, null);
var conn = GetConnection(_tran); var conn = GetConnection(_tran);
try try
...@@ -45,9 +42,6 @@ namespace LiteSql ...@@ -45,9 +42,6 @@ namespace LiteSql
/// </summary> /// </summary>
public async Task<List<T>> QueryListAsync<T>(string sql) public async Task<List<T>> QueryListAsync<T>(string sql)
{ {
SqlFilter(ref sql);
OnExecuting?.Invoke(sql, null);
var conn = GetConnection(_tran); var conn = GetConnection(_tran);
try try
...@@ -73,8 +67,6 @@ namespace LiteSql ...@@ -73,8 +67,6 @@ namespace LiteSql
/// </summary> /// </summary>
public List<T> QueryList<T>(string sql, DbParameter[] cmdParms) public List<T> QueryList<T>(string sql, DbParameter[] cmdParms)
{ {
OnExecuting?.Invoke(sql, cmdParms);
var conn = GetConnection(_tran); var conn = GetConnection(_tran);
try try
...@@ -99,8 +91,6 @@ namespace LiteSql ...@@ -99,8 +91,6 @@ namespace LiteSql
/// </summary> /// </summary>
public async Task<List<T>> QueryListAsync<T>(string sql, DbParameter[] cmdParms) public async Task<List<T>> QueryListAsync<T>(string sql, DbParameter[] cmdParms)
{ {
OnExecuting?.Invoke(sql, cmdParms);
var conn = GetConnection(_tran); var conn = GetConnection(_tran);
try try
......
...@@ -23,8 +23,6 @@ namespace LiteSql ...@@ -23,8 +23,6 @@ namespace LiteSql
PrepareInsertSql(obj, ref strSql, ref parameters); PrepareInsertSql(obj, ref strSql, ref parameters);
OnExecuting?.Invoke(strSql.ToString(), parameters);
Execute(strSql.ToString(), parameters); Execute(strSql.ToString(), parameters);
} }
...@@ -39,8 +37,6 @@ namespace LiteSql ...@@ -39,8 +37,6 @@ namespace LiteSql
PrepareInsertSql(obj, ref strSql, ref parameters); PrepareInsertSql(obj, ref strSql, ref parameters);
strSql.Append(";" + selectIdSql + ";"); strSql.Append(";" + selectIdSql + ";");
OnExecuting?.Invoke(strSql.ToString(), parameters);
object id = ExecuteScalar(strSql.ToString(), parameters); object id = ExecuteScalar(strSql.ToString(), parameters);
return Convert.ToInt64(id); return Convert.ToInt64(id);
} }
...@@ -57,8 +53,6 @@ namespace LiteSql ...@@ -57,8 +53,6 @@ namespace LiteSql
PrepareInsertSql(obj, ref strSql, ref parameters); PrepareInsertSql(obj, ref strSql, ref parameters);
OnExecuting?.Invoke(strSql.ToString(), parameters);
await ExecuteAsync(strSql.ToString(), parameters); await ExecuteAsync(strSql.ToString(), parameters);
} }
...@@ -73,8 +67,6 @@ namespace LiteSql ...@@ -73,8 +67,6 @@ namespace LiteSql
PrepareInsertSql(obj, ref strSql, ref parameters); PrepareInsertSql(obj, ref strSql, ref parameters);
strSql.Append(";" + selectIdSql + ";"); strSql.Append(";" + selectIdSql + ";");
OnExecuting?.Invoke(strSql.ToString(), parameters);
object id = await ExecuteScalarAsync(strSql.ToString(), parameters); object id = await ExecuteScalarAsync(strSql.ToString(), parameters);
return Convert.ToInt64(id); return Convert.ToInt64(id);
} }
...@@ -104,8 +96,6 @@ namespace LiteSql ...@@ -104,8 +96,6 @@ namespace LiteSql
PrepareInsertSql<T>(listPage, ref strSql, ref parameters, ref savedCount); PrepareInsertSql<T>(listPage, ref strSql, ref parameters, ref savedCount);
OnExecuting?.Invoke(strSql.ToString(), parameters);
Execute(strSql.ToString(), parameters); Execute(strSql.ToString(), parameters);
} }
} }
...@@ -135,8 +125,6 @@ namespace LiteSql ...@@ -135,8 +125,6 @@ namespace LiteSql
PrepareInsertSql<T>(listPage, ref strSql, ref parameters, ref savedCount); PrepareInsertSql<T>(listPage, ref strSql, ref parameters, ref savedCount);
OnExecuting?.Invoke(strSql.ToString(), parameters);
await ExecuteAsync(strSql.ToString(), parameters); await ExecuteAsync(strSql.ToString(), parameters);
} }
} }
......
...@@ -69,8 +69,6 @@ namespace LiteSql ...@@ -69,8 +69,6 @@ namespace LiteSql
if (savedCount > 0) if (savedCount > 0)
{ {
OnExecuting?.Invoke(strSql.ToString(), parameters);
Execute(strSql.ToString(), parameters); Execute(strSql.ToString(), parameters);
} }
} }
...@@ -93,8 +91,6 @@ namespace LiteSql ...@@ -93,8 +91,6 @@ namespace LiteSql
if (savedCount > 0) if (savedCount > 0)
{ {
OnExecuting?.Invoke(strSql.ToString(), parameters);
await ExecuteAsync(strSql.ToString(), parameters); await ExecuteAsync(strSql.ToString(), parameters);
} }
} }
...@@ -139,8 +135,6 @@ namespace LiteSql ...@@ -139,8 +135,6 @@ namespace LiteSql
if (savedCount > 0) if (savedCount > 0)
{ {
OnExecuting?.Invoke(strSql.ToString(), parameters);
Execute(strSql.ToString(), parameters); Execute(strSql.ToString(), parameters);
} }
} }
...@@ -186,8 +180,6 @@ namespace LiteSql ...@@ -186,8 +180,6 @@ namespace LiteSql
if (savedCount > 0) if (savedCount > 0)
{ {
OnExecuting?.Invoke(strSql.ToString(), parameters);
await ExecuteAsync(strSql.ToString(), parameters); await ExecuteAsync(strSql.ToString(), parameters);
} }
} }
......
...@@ -93,5 +93,12 @@ namespace LiteSql ...@@ -93,5 +93,12 @@ namespace LiteSql
Task<DbConnection> GetOpenedConnectionAsync(DbTransaction tran = null); Task<DbConnection> GetOpenedConnectionAsync(DbTransaction tran = null);
#endregion #endregion
#region 设置CommandType
/// <summary>
/// 设置CommandType
/// </summary>
IDbSession SetCommandType(CommandType commandType);
#endregion
} }
} }
...@@ -151,6 +151,34 @@ namespace LiteSql ...@@ -151,6 +151,34 @@ namespace LiteSql
#endregion #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 #region SqlString
/// <summary> /// <summary>
......
...@@ -479,6 +479,17 @@ namespace LiteSql ...@@ -479,6 +479,17 @@ namespace LiteSql
Dictionary<string, object> dict = new Dictionary<string, object>(); Dictionary<string, object> dict = new Dictionary<string, object>();
MatchCollection mc = _regex.Matches(sql); MatchCollection mc = _regex.Matches(sql);
int argIndex = 0; int argIndex = 0;
if (isAnonymous && mc.Count == 0) //存储过程的情况
{
foreach (string name in anonymousValues.Keys)
{
object obj = anonymousValues[name];
dict.Add(name, obj);
}
return dict;
}
foreach (Match m in mc) foreach (Match m in mc)
{ {
var oldSql = m.Value; var oldSql = m.Value;
...@@ -508,6 +519,7 @@ namespace LiteSql ...@@ -508,6 +519,7 @@ namespace LiteSql
sql = ReplaceSql(sql, oldSql, name, parameterType); sql = ReplaceSql(sql, oldSql, name, parameterType);
} }
} }
return dict; return dict;
} }
#endregion #endregion
......
...@@ -6,6 +6,7 @@ using System.Collections.Generic; ...@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using LiteSql; using LiteSql;
using Utils; using Utils;
using System.Data;
namespace LiteSqlTest namespace LiteSqlTest
{ {
...@@ -490,5 +491,54 @@ namespace LiteSqlTest ...@@ -490,5 +491,54 @@ namespace LiteSqlTest
} }
#endregion #endregion
#region 测试调用存储过程
[TestMethod]
public void TestStoredProcedure()
{
var session = LiteSqlFactory.GetSession();
session.OnExecuting = (s, p) =>
{
Console.WriteLine(s);
};
List<dynamic> list = session.SetCommandType(CommandType.StoredProcedure).Sql("query_user", new { maxId = 20 }).ToList<dynamic>();
foreach (var item in list)
{
Console.WriteLine($"{item.user_name}, {item.real_name}, {item.remark}");
}
Assert.IsTrue(list.Count > 0);
list = session.SetCommandType(CommandType.Text).Sql("select user_name, real_name, remark from sys_user where id<=@Id", 20).ToList<dynamic>();
Assert.IsTrue(list.Count > 0);
}
#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
} }
} }
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50728
Source Host : localhost:3306
Source Database : litesql_test
Target Server Type : MYSQL
Target Server Version : 50728
File Encoding : 65001
Date: 2023-12-08 13:30:02
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Procedure structure for `query_user`
-- ----------------------------
DROP PROCEDURE IF EXISTS `query_user`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `query_user`(in maxId BIGINT)
BEGIN
SELECT * from sys_user where id<=maxId;
END
;;
DELIMITER ;