4 Commits

  1. 6
      Apewer/ClockUtility.cs
  2. 4
      Apewer/Logger.cs
  3. 2
      Apewer/NumberUtility.cs
  4. 44
      Apewer/Source/SourceUtility.cs

6
Apewer/ClockUtility.cs

@ -348,13 +348,13 @@ namespace Apewer
{
if (string.IsNullOrEmpty(text)) return null;
// 使用默认解析。
if (TryParse(text, out DateTime system)) return new Class<DateTime>(system);
// 尝试解析 Lucid 格式。
var lucid = ParseLucid(text);
if (lucid != null) return lucid;
// 使用默认解析。
if (TryParse(text, out DateTime system)) return new Class<DateTime>(system);
return null;
}

4
Apewer/Logger.cs

@ -287,8 +287,8 @@ namespace Apewer
}
// 从文件名解析日期
var dt = ClockUtility.ParseLucid(fileName.Substring(0, 10));
if (dt == null || !dt.HasValue) continue;
var dt = ClockUtility.Parse(fileName.Substring(0, 10));
if (dt == null) continue;
var days = Convert.ToInt32(Convert.ToInt64((today - dt.Value).TotalMilliseconds) / 86400000L);
if (days > reserved)

2
Apewer/NumberUtility.cs

@ -16,7 +16,7 @@ namespace Apewer
#region 随机数。
/// <summary>用于生成随机数的时钟位置。</summary>
private static int RandomSeed = 327680;
private static int RandomSeed = Guid.NewGuid().ToString().GetHashCode();
private static void RandomInit()
{

44
Apewer/Source/SourceUtility.cs

@ -398,15 +398,16 @@ namespace Apewer.Source
/// <summary>简单查询:取结果中第 0 列所有单元格的文本形式,可指定查询后关闭服务器连接,返回结果中不包含无效文本。</summary>
/// <param name="source">数据库客户端。</param>
/// <param name="sql">用于查询的 SQL 语句。</param>
/// <param name="parameters">SQL 参数。</param>
/// <exception cref="SqlException"></exception>
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
/// <summary>简单查询:取结果中第 0 行、第 0 列单元格中的文本,可指定查询后关闭服务器连接。</summary>
/// <param name="dbClient">数据库客户端。</param>
/// <param name="sql">用于查询的 SQL 语句。</param>
/// <param name="parameters">SQL 参数。</param>
/// <exception cref="ArgumentNullException"></exception>
/// <exception cref="SqlException"></exception>
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
}
}
/// <summary>查询。</summary>
/// <param name="dbClient">数据库连接。</param>
/// <param name="sql">SQL 语句。</param>
/// <param name="parameters">参数容器,每个属性表示一个 SQL 参数。此方法将会自动补足参数名称的 @ 前缀。</param>
/// <exception cref="ArgumentNullException"></exception>
/// <exception cref="NotImplementedException"></exception>
public static T[] Query<T>(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<KeyValuePair<string, object>> kvps)
{
var ps = Parameters(ado, sql, kvps);
return dbClient.Query<T>(sql, ps);
}
else
{
var ps = ParametersByProperites(ado, sql, parameters);
return dbClient.Query<T>(sql, ps);
}
}
else
{
throw new NotImplementedException($"连接未实现 {nameof(IDbAdo)} 接口,无法创建参数。");
}
}
#endregion
#region Execute

Loading…
Cancel
Save