diff --git a/Apewer/Source/SourceUtility.cs b/Apewer/Source/SourceUtility.cs
index d9fdc7e..176b1d5 100644
--- a/Apewer/Source/SourceUtility.cs
+++ b/Apewer/Source/SourceUtility.cs
@@ -398,15 +398,16 @@ namespace Apewer.Source
/// 简单查询:取结果中第 0 列所有单元格的文本形式,可指定查询后关闭服务器连接,返回结果中不包含无效文本。
/// 数据库客户端。
/// 用于查询的 SQL 语句。
+ /// SQL 参数。
///
- public static string[] Column(this IDbAdo source, string sql)
+ public static string[] Column(this IDbAdo source, string sql, object parameters = null)
{
if (source == null) return new string[0];
var pool = null as string[];
var rows = 0;
var count = 0;
- using (var query = source.Query(sql))
+ using (var query = source.Query(sql, parameters))
{
if (!query.Success) throw new SqlException(query, sql);
@@ -435,14 +436,15 @@ namespace Apewer.Source
/// 简单查询:取结果中第 0 行、第 0 列单元格中的文本,可指定查询后关闭服务器连接。
/// 数据库客户端。
/// 用于查询的 SQL 语句。
+ /// SQL 参数。
///
///
- public static string Cell(this IDbAdo dbClient, string sql)
+ public static string Cell(this IDbAdo dbClient, string sql, object parameters = null)
{
if (dbClient == null) throw new ArgumentNullException(nameof(dbClient));
if (sql.IsEmpty()) throw new ArgumentNullException(nameof(sql));
- using (var query = dbClient.Query(sql))
+ using (var query = dbClient.Query(sql, parameters))
{
if (!query.Success) throw new SqlException(query, sql);
var value = TextUtility.Trim(query.Text(0, 0));
@@ -479,7 +481,7 @@ namespace Apewer.Source
var ps = Parameters(dbClient, sql, kvps);
return dbClient.Query(sql, ps);
}
-
+ else
{
var ps = ParametersByProperites(dbClient, sql, parameters);
return dbClient.Query(sql, ps);
@@ -522,6 +524,38 @@ namespace Apewer.Source
}
}
+
+ /// 查询。
+ /// 数据库连接。
+ /// SQL 语句。
+ /// 参数容器,每个属性表示一个 SQL 参数。此方法将会自动补足参数名称的 @ 前缀。
+ ///
+ ///
+ public static T[] Query(this IDbOrm dbClient, string sql, object parameters = null) where T : class, new()
+ {
+ if (dbClient == null) throw new ArgumentNullException(nameof(dbClient));
+ if (sql.IsEmpty()) throw new ArgumentNullException(nameof(sql));
+
+ if (dbClient is IDbAdo ado)
+ {
+ if (parameters is IEnumerable> kvps)
+ {
+ var ps = Parameters(ado, sql, kvps);
+ return dbClient.Query(sql, ps);
+ }
+ else
+ {
+ var ps = ParametersByProperites(ado, sql, parameters);
+ return dbClient.Query(sql, ps);
+ }
+ }
+ else
+ {
+ throw new NotImplementedException($"连接未实现 {nameof(IDbAdo)} 接口,无法创建参数。");
+ }
+ }
+
+
#endregion
#region Execute