Commit 9a81d3ca authored by tr's avatar tr

1、数据访问层优化:后续将SmpDB全部更换为DatabaseHelper

parent 40e82559
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//
using Tools.MyUtils;
namespace Tools.MyData
{
/// <summary>
/// 数据访问帮助类
/// </summary>
public class DatabaseHelper : IDisposable
{
/// <summary>
/// 数据库访问对象
/// </summary>
SmpDB _db = new SmpDB();
/// <summary>
/// 数据库链接
/// </summary>
private string _link = "";
/// <summary>
/// 构造函数:数据访问帮助类
/// </summary>
/// <param name="link">链接</param>
public DatabaseHelper(string link)
{
this._link = link;
}
/// <summary>
/// 构造函数:数据访问帮助类
/// </summary>
/// <param name="m"></param>
public DatabaseHelper(DbItemModel m)
{
this._link = m.LinkString;
}
/// <summary>
/// 获取数据表
/// </summary>
/// <param name="strSql">SQL语句</param>
/// <param name="strTableName">获取指定表</param>
/// <returns></returns>
public DataTable GetDataTable(string strSql, string strTableName)
{
return this._db.GetDataTable(this._link, strSql, strTableName);
}
/// <summary>
/// 获取数据集
/// </summary>
/// <param name="strSql">SQL语句</param>
/// <param name="strTableName">获取指定表</param>
/// <returns></returns>
public DataSet GetData(string strSql, string strTableName)
{
return this._db.GetData(this._link, strSql, strTableName);
}
/// <summary>
/// 获取数据集
/// </summary>
/// <param name="Tables">表的扩展集合</param>
/// <param name="Schema">是否获取结构信息</param>
/// <returns></returns>
public DataSet GetData(List<TQuery> Tables, bool Schema)
{
return this._db.GetData(this._link, Tables, Schema);
}
/// <summary>
/// 保存数据表
/// </summary>
/// <param name="dt">待保存表</param>
/// <returns></returns>
public bool SaveDataTable(DataTable dt)
{
return this._db.SaveDataTable(this._link, dt);
}
/// <summary>
/// 保存数据集
/// </summary>
/// <param name="ds">待保存的数据集</param>
/// <param name="strTableName">保存数据集中的指定表</param>
/// <returns></returns>
public bool SaveData(DataSet ds, string strTableName)
{
return this._db.SaveData(this._link, ds, strTableName);
}
/// <summary>
/// 保存数据集
/// </summary>
/// <param name="ds">数据集</param>
/// <param name="Tables">表的扩展集合</param>
/// <returns></returns>
public bool SaveData(DataSet ds, List<TQuery> Tables)
{
return this._db.SaveData(this._link, ds, Tables);
}
/// <summary>
/// 数据库连接测试
/// </summary>
/// <returns></returns>
public bool ConnectionTest()
{
return this._db.ConnectionTest(this._link);
}
/// <summary>
/// 执行SQL语句:这里的多条语句采用同一事务处理,方便出错时回滚,保证数据统一
/// </summary>
/// <param name="strExecSqlList">带执行的SQL列表</param>
/// <returns></returns>
public bool ExecNonSql(List<string> strExecSqlList)
{
return this._db.ExecNonSql(this._link, strExecSqlList);
}
/// <summary>
/// 是否存在
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public bool IsExist(string strSql)
{
return this._db.IsExist(this._link, strSql);
}
#region async methods
/// <summary>
/// 单表取数(异步)
/// </summary>
/// <param name="strSql"></param>
/// <param name="strTableName"></param>
/// <returns></returns>
public Task<DataTable> GetDataTableAsync(string strSql, string strTableName)
{
return Task.Run(() => GetDataTable(strSql, strTableName));
}
/// <summary>
/// 单表取数(异步)
/// </summary>
/// <param name="strSql"></param>
/// <param name="strTableName"></param>
/// <returns></returns>
public Task<DataSet> GetDataAsync(string strSql, string strTableName)
{
return Task.Run(() => GetData(strSql, strTableName));
}
/// <summary>
/// 多表取数(异步)
/// </summary>
/// <param name="Tables"></param>
/// <param name="Schema"></param>
/// <returns></returns>
public Task<DataSet> GetDataAsync(List<TQuery> Tables, bool Schema)
{
return Task.Run(() => GetData(Tables, Schema));
}
/// <summary>
/// 单表保存(异步)
/// </summary>
/// <param name="ds"></param>
/// <param name="strTableName"></param>
/// <returns></returns>
public Task<bool> SaveDataTableAsync(DataTable dt, string strTableName)
{
return Task.Run(() => SaveDataTable(dt));
}
/// <summary>
/// 单表保存(异步)
/// </summary>
/// <param name="ds"></param>
/// <param name="strTableName"></param>
/// <returns></returns>
public Task<bool> SaveDataAsync(DataSet ds, string strTableName)
{
return Task.Run(() => SaveData(ds, strTableName));
}
/// <summary>
/// 多表保存(异步)
/// </summary>
/// <param name="ds"></param>
/// <param name="Tables"></param>
/// <returns></returns>
public Task<bool> SaveDataAsync(DataSet ds, List<TQuery> Tables)
{
return Task.Run(() => SaveData(ds, Tables));
}
/// <summary>
/// 数据库连接测试(异步)
/// </summary>
/// <returns></returns>
public Task<bool> ConnectionTestAsync()
{
return Task.Run(() => ConnectionTest());
}
/// <summary>
/// SQL批量执行(异步)
/// </summary>
/// <param name="strExecSqlList"></param>
/// <returns></returns>
public Task<bool> ExecNonSqlAsync(List<string> strExecSqlList)
{
return Task.Run(() => ExecNonSql(strExecSqlList));
}
/// <summary>
/// 是否存在(异步)
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public Task<bool> ISExistAsync(string strSql)
{
return Task.Run(() => IsExist(strSql));
}
#endregion
#region 实现接口:IDispose
public void Dispose()
{
this._db = null;
this._link = null;
}
#endregion
}
}
...@@ -16,40 +16,10 @@ namespace Tools.MyData ...@@ -16,40 +16,10 @@ namespace Tools.MyData
/// </summary> /// </summary>
public class SmpDB : IDisposable public class SmpDB : IDisposable
{ {
#region IDisposable Support #region 实现接口:IDisposable
private bool disposedValue = false; // 要检测冗余调用 public void Dispose()
protected virtual void Dispose(bool disposing)
{
if (!disposedValue)
{
if (disposing)
{
// TODO: 释放托管状态(托管对象)。
}
// TODO: 释放未托管的资源(未托管的对象)并在以下内容中替代终结器。
// TODO: 将大型字段设置为 null。
disposedValue = true;
}
}
// TODO: 仅当以上 Dispose(bool disposing) 拥有用于释放未托管资源的代码时才替代终结器。
// ~SmpDB()
// {
// // 请勿更改此代码。将清理代码放入以上 Dispose(bool disposing) 中。
// Dispose(false);
// }
// 添加此代码以正确实现可处置模式。
void IDisposable.Dispose()
{ {
// 请勿更改此代码。将清理代码放入以上 Dispose(bool disposing) 中。
Dispose(true);
// TODO: 如果在以上内容中替代了终结器,则取消注释以下行。
// GC.SuppressFinalize(this);
} }
#endregion #endregion
...@@ -59,7 +29,7 @@ namespace Tools.MyData ...@@ -59,7 +29,7 @@ namespace Tools.MyData
/// </summary> /// </summary>
/// <param name="strLink">数据库连接字串</param> /// <param name="strLink">数据库连接字串</param>
/// <param name="strSql">SQL语句</param> /// <param name="strSql">SQL语句</param>
/// <param name="strLink">数据库连接字串</param> /// <param name="strTableName">表名</param>
/// <returns></returns> /// <returns></returns>
public DataTable GetDataTable(string strLink, string strSql, string strTableName) public DataTable GetDataTable(string strLink, string strSql, string strTableName)
{ {
...@@ -89,7 +59,7 @@ namespace Tools.MyData ...@@ -89,7 +59,7 @@ namespace Tools.MyData
/// </summary> /// </summary>
/// <param name="strLink">数据库连接字串</param> /// <param name="strLink">数据库连接字串</param>
/// <param name="strSql">SQL语句</param> /// <param name="strSql">SQL语句</param>
/// <param name="strLink">数据库连接字串</param> /// <param name="strTableName">表名</param>
/// <returns></returns> /// <returns></returns>
public DataSet GetData(string strLink, string strSql, string strTableName) public DataSet GetData(string strLink, string strSql, string strTableName)
{ {
...@@ -171,8 +141,8 @@ namespace Tools.MyData ...@@ -171,8 +141,8 @@ namespace Tools.MyData
/// 保存数据表 /// 保存数据表
/// <para>单表效率测试:100行0.75秒;500行3.7秒;5000行36秒左右</para> /// <para>单表效率测试:100行0.75秒;500行3.7秒;5000行36秒左右</para>
/// </summary> /// </summary>
/// <param name="dt">待保存表</param>
/// <param name="strLink">数据库连接字串</param> /// <param name="strLink">数据库连接字串</param>
/// <param name="dt">待保存表</param>
/// <returns></returns> /// <returns></returns>
public bool SaveDataTable(string strLink, DataTable dt) public bool SaveDataTable(string strLink, DataTable dt)
{ {
...@@ -228,8 +198,8 @@ namespace Tools.MyData ...@@ -228,8 +198,8 @@ namespace Tools.MyData
/// 保存数据集 /// 保存数据集
/// <para>单表效率测试:100行0.75秒;500行3.7秒;5000行36秒左右</para> /// <para>单表效率测试:100行0.75秒;500行3.7秒;5000行36秒左右</para>
/// </summary> /// </summary>
/// <param name="ds">待保存的数据集</param>
/// <param name="strLink">数据库连接字串</param> /// <param name="strLink">数据库连接字串</param>
/// <param name="ds">待保存的数据集</param>
/// <returns></returns> /// <returns></returns>
public bool SaveData(string strLink, DataSet ds, string strTableName) public bool SaveData(string strLink, DataSet ds, string strTableName)
{ {
...@@ -287,8 +257,8 @@ namespace Tools.MyData ...@@ -287,8 +257,8 @@ namespace Tools.MyData
/// 保存数据集 /// 保存数据集
/// <para>单表效率测试:100行0.76秒;500行3.7秒;5000行37秒左右</para> /// <para>单表效率测试:100行0.76秒;500行3.7秒;5000行37秒左右</para>
/// </summary> /// </summary>
/// <param name="ds">数据集</param>
/// <param name="strLink">数据库连接字串</param> /// <param name="strLink">数据库连接字串</param>
/// <param name="ds">数据集</param>
/// <param name="Tables">表的扩展集合</param> /// <param name="Tables">表的扩展集合</param>
/// <returns></returns> /// <returns></returns>
public bool SaveData(string strLink, DataSet ds, List<TQuery> Tables) public bool SaveData(string strLink, DataSet ds, List<TQuery> Tables)
...@@ -383,7 +353,7 @@ namespace Tools.MyData ...@@ -383,7 +353,7 @@ namespace Tools.MyData
/// <param name="strLink">数据库连接</param> /// <param name="strLink">数据库连接</param>
/// <param name="strExecSqlList">带执行的SQL列表</param> /// <param name="strExecSqlList">带执行的SQL列表</param>
/// <returns></returns> /// <returns></returns>
public bool ExecNonSql(string strLink, List<string> strExecSqlList, CommandType cmdType = CommandType.Text) public bool ExecNonSql(string strLink, List<string> strExecSqlList)
{ {
SqlConnection conn = null; SqlConnection conn = null;
SqlCommand cmd = null; SqlCommand cmd = null;
...@@ -403,7 +373,7 @@ namespace Tools.MyData ...@@ -403,7 +373,7 @@ namespace Tools.MyData
foreach (string cmdText in strExecSqlList) foreach (string cmdText in strExecSqlList)
{ {
cmd.CommandText = cmdText; cmd.CommandText = cmdText;
cmd.CommandType = cmdType; cmd.CommandType = CommandType.Text;
int ret = cmd.ExecuteNonQuery(); int ret = cmd.ExecuteNonQuery();
} }
//提交事务 //提交事务
...@@ -581,7 +551,7 @@ namespace Tools.MyData ...@@ -581,7 +551,7 @@ namespace Tools.MyData
#endregion #endregion
} }
/// <summary> /// <summary>
......
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="MyData\DatabaseHelper.cs" />
<Compile Include="UI\Models\AppModel.cs" /> <Compile Include="UI\Models\AppModel.cs" />
<Compile Include="MyCommon\Common.cs" /> <Compile Include="MyCommon\Common.cs" />
<Compile Include="MyCommon\wBasic.cs"> <Compile Include="MyCommon\wBasic.cs">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment