王厅 1 month ago
parent
commit
635f4be755
  1. 51
      Apewer.Source/Source/Access.cs
  2. 6
      Apewer.Source/Source/DbClient.cs
  3. 17
      Apewer/Logger.cs
  4. 2
      Apewer/Source/SourceUtility.cs
  5. 23
      Apewer/_Extensions.cs

51
Apewer.Source/Source/Access.cs

@ -21,6 +21,9 @@ namespace Apewer.Source
/// <remarks>当操作系统启用随机化内存分配时,此方法可能会产生异常。</remarks>
public static string[] ParsePassword(string path) => AccessHelper.GetPassword(path);
/// <summary>数据库文件路径。</summary>
public virtual string Path { get; protected set; }
}
#if NETFRAMEWORK
@ -79,7 +82,33 @@ namespace Apewer.Source
public override string[] StoreNames() => throw new InvalidOperationException();
/// <summary></summary>
public override string[] TableNames() => QueryStrings("select name from msysobjects where type=1 and flags = 0");
public override string[] TableNames()
{
// QueryStrings("select name from msysobjects where type=1 and flags = 0");
Connect();
var schema = _conn.GetSchema("Tables");
using (var query = new Query(schema))
{
var json = query.ToJson();
var names = new List<string>();
for (var i = 0; i < query.Rows; i++)
{
var type = query.Text(i, "TABLE_TYPE");
var name = query.Text(i, "TABLE_NAME");
switch (type)
{
case "ACCESS TABLE":
case "SYSTEM TABLE":
break;
case "TABLE":
names.Add(name);
break;
}
}
names.Sort();
return names.ToArray();
}
}
/// <summary></summary>
public override string Insert(object record, string table = null, bool adjust = true)
@ -494,12 +523,18 @@ namespace Apewer.Source
/// <summary>创建 Access 类的新实例。</summary>
/// <exception cref="FileNotFoundException"></exception>
public AccessJet4(string path, string pass = null, string jo = null, Timeout timeout = null)
: base(GenerateCS(JetOleDB4, path, pass, jo), timeout) { }
: base(GenerateCS(JetOleDB4, path, pass, jo), timeout)
{
Path = path;
}
/// <summary>使用连接字符串创建数据库连接实例。</summary>
/// <exception cref="ArgumentNullException"></exception>
/// <exception cref="ArgumentException"></exception>
public AccessJet4(IDbConnection connection, Timeout timeout = null) : base(connection, timeout) { }
public AccessJet4(IDbConnection connection, Timeout timeout = null) : base(connection, timeout)
{
Path = (connection as Access)?.Path;
}
}
@ -512,12 +547,18 @@ namespace Apewer.Source
/// <summary>创建 Access 类的新实例。</summary>
/// <exception cref="FileNotFoundException"></exception>
public AccessAce12(string path, string pass = null, string jo = null, Timeout timeout = null)
: base(GenerateCS(AceOleDB12, path, pass, jo), timeout) { }
: base(GenerateCS(AceOleDB12, path, pass, jo), timeout)
{
Path = path;
}
/// <summary>使用连接字符串创建数据库连接实例。</summary>
/// <exception cref="ArgumentNullException"></exception>
/// <exception cref="ArgumentException"></exception>
public AccessAce12(IDbConnection connection, Timeout timeout = null) : base(connection, timeout) { }
public AccessAce12(IDbConnection connection, Timeout timeout = null) : base(connection, timeout)
{
Path = (connection as Access)?.Path;
}
}

6
Apewer.Source/Source/DbClient.cs

@ -102,7 +102,11 @@ namespace Apewer.Source
}
var connect = Connect();
if (connect.NotEmpty()) return connect;
if (connect.NotEmpty())
{
if (ThrowAdoException) throw new Exception(connect);
return connect;
}
try
{

17
Apewer/Logger.cs

@ -378,24 +378,7 @@ namespace Apewer
#region public
/// <summary>记录异常。</summary>
public void Exception<T>(T exception, params object[] content) where T : Exception => Output("Exception", content, exception);
/// <summary>记录错误。多个 Content 参数将以“ | ”分隔。</summary>
public void Error(params object[] content) => Output("Error", content, null);
/// <summary>记录警告。多个 Content 参数将以“ | ”分隔。</summary>
public void Warning(params object[] content) => Output("Warning", content, null);
/// <summary>记录警告。多个 Content 参数将以“ | ”分隔。</summary>
public void Info(params object[] content) => Output("Info", content, null);
/// <summary>记录文本。多个 Content 参数将以“ | ”分隔。</summary>
public void Text(params object[] content) => Output(null, content, null);
/// <summary>记录调试。多个 Content 参数将以“ | ”分隔。</summary>
[Conditional("DEBUG")]
public void Debug(params object[] content) => Output("Debug", content, null);
#endregion

2
Apewer/Source/SourceUtility.cs

@ -900,7 +900,7 @@ namespace Apewer.Source
if (table == null) return null;
var columns = ToJson(table.Columns);
var rows = ToJson(table.Rows);
var rows = ToJson(table.Rows, dateTimeFormatter);
var jsonObject = Json.NewObject();
jsonObject.SetProperty("columns", columns);

23
Apewer/_Extensions.cs

@ -358,8 +358,27 @@ public static class Extensions
#region Logger
/// <summary>记录文本。多个 Content 参数将以“ | ”分隔,此方法等同于 <see cref="Logger.Text"/>。</summary>
public static void Write(this Logger logger, object sender, params object[] content) => logger?.Text(sender, null, content, null);
/// <summary>记录文本。多个 Content 参数将以“ | ”分隔。</summary>
public static void Write(this Logger logger, params object[] content) => logger?.Output(null, content, null);
/// <summary>记录异常。</summary>
public static void Exception<T>(this Logger logger, T exception, params object[] content) where T : Exception => logger?.Output("Exception", content, exception);
/// <summary>记录错误。多个 Content 参数将以“ | ”分隔。</summary>
public static void Error(this Logger logger, params object[] content) => logger?.Output("Error", content, null);
/// <summary>记录警告。多个 Content 参数将以“ | ”分隔。</summary>
public static void Warning(this Logger logger, params object[] content) => logger?.Output("Warning", content, null);
/// <summary>记录警告。多个 Content 参数将以“ | ”分隔。</summary>
public static void Info(this Logger logger, params object[] content) => logger?.Output("Info", content, null);
/// <summary>记录文本。多个 Content 参数将以“ | ”分隔。</summary>
public static void Text(this Logger logger, params object[] content) => logger?.Output(null, content, null);
/// <summary>记录调试。多个 Content 参数将以“ | ”分隔。</summary>
[Conditional("DEBUG")]
public static void Debug(this Logger logger, params object[] content) => logger?.Output("Debug", content, null);
#endregion

Loading…
Cancel
Save