C# 使用SqlSugar数据库操作中间件操作数据库
使用C#进行上位机的开发过程中,需要直接操作数据库。一直以来都是直接写数据库连接字符串。这种操作一般来说没有什么问题,但是有不少问题难以处理。
问题说明
1:操作数据库如果上位机上时间开机,可能在一定时间内,没有进行数据库操作,数据库连接就会断开,一般是8个小时。数据库连接断开后,还需要程序去重新连接。目前操作是进行一个ping操作。
2:非线程安全的,如果牵扯到多个线程使用同一个Connection来操作数据库,可能出现线程问题。操作失败。然后就需要重启软件了。
3:数据库操作后获取到的数据都是DataSet的。没有明显的数据结构定义,在开发过程中,想后去某个特定的值,需要看字段名字,操作非常不方便,非常低效。
4:需要些很多Sql语句。这些Sql语句非常容易出错,不知道哪里就有问题了,然后如果多一个字段或者少一个字段,修改起来没有经过严格测试就会报错,而这种报错不容易被发现。
解决办法
当看到SqlSuagar ORM中间件后,发现SqlSugar能够解决以上所有问题。本文主要介绍C#中通过SqlSugar的建立一个Connection,线程安全的。
SqlSugar是一个非常强的ORM工具,官网地址:SqlSugar
具体代码如下所示:
public class SqlSugarHelper
{
private SqlSugarHelper()
{
}
private static SqlSugarHelper instance = null;
public static SqlSugarHelper GetInstance()
{
if (instance == null)
{
instance = new SqlSugarHelper();
}
return instance;
}
private SqlSugar.SqlSugarScope dataBase = null;
/// <summary>
/// 获取database对象
/// </summary>
/// <returns></returns>
public SqlSugar.SqlSugarScope GetDataBase()
{
if (dataBase == null)
{
////用户名
//string uId = ConfigurationManager.AppSettings["userId"].ToString();
////密码
//string pwd = ConfigurationManager.AppSettings["pwd"].ToString();
// //服务器地址
//string server = ConfigurationManager.AppSettings["serverIp"].ToString();
////端口
//int port = int.Parse(ConfigurationManager.AppSettings["port"].ToString());
////数据库名称
//string dbName = ConfigurationManager.AppSettings["dbName"].ToString();
//
string dataSource = ConfigurationManager.AppSettings["oracle_datasource"];
string userId = ConfigurationManager.AppSettings["oracle_userId"];
string pwd = ConfigurationManager.AppSettings["oracle_pwd"];
string dbName = ConfigurationManager.AppSettings["oracle_dbName"];
dataBase = new SqlSugar.SqlSugarScope(new SqlSugar.ConnectionConfig()
{
//ConnectionString = $"server={server};port ={port};uid={uId};pwd={pwd};database={dbName};",
ConnectionString = $"Data Source={dataSource};User ID={userId};Password={pwd}",
DbType = SqlSugar.DbType.Oracle,
IsAutoCloseConnection = true,
MoreSettings = new ConnMoreSettings()
{
IsAutoToUpper = false //是否转大写,默认是转大写的可以禁止转大写
}
},
db => {
db.Aop.OnLogExecuting = (sql, args) => {
//查看执行的sql性能无影响 打印成为日志,有那些sql语句被执行了
Console.WriteLine(sql);
};
});;
}
return dataBase;
}
}
前提
需要通过NuGet安装SqlSugar组件。上面的代码才能正确运行。
数据库的地址 用户名 密码 等 通过app.settting配置。在使用的时候读取出来。
怎么使用?
读取当前数据库中的 表 结构信息
List<SqlSugar.DbTableInfo> tableInfo = sqlsugar.SqlSugarHelper.GetInstance().GetDataBase().DbMaintenance.GetTableInfoList(false);
通过查询条件查询数据库中的数据 并且进行分页操作
var result = sqlsugar.SqlSugarHelper.GetInstance().GetDataBase().Queryable<models.dbmodels.【modelName】>()
Where(item=> item.Deleted == false).WhereIF(
beginTime != ""
).
WhereIF(endTime != "".ToPageList(pageNum, pageSize, ref allTotal) ;
其中[modelName]是数据库中指定表映射过来的实体类。
本文主要介绍了一下SqlSuagar的数据库连接。
在后面的文章中会介绍,怎么根据数据库表结构生成对应的实体类。
联系方式
Tel:17320170935(微信同号-添加请备注微见-KTV)
QQ:472198980 (添加请备注 微见-KTV)
很赞哦! (0)