当前位置:   article > 正文

.NET Core C#系列之XiaoFeng.Data.DataHelper数据库操作_vs 引用system.data.sqlclient

vs 引用system.data.sqlclient

XiaoFeng.Data.DataHelper,当前类库支持MySql,SqlServer,Oledb,SQLite,Oracle,DM等数据库

下面就以SqlServer为例,详细讲解一下当前类库。

第一步,引用 System.Data.SqlClient驱动库

在VS中的解决方案中,依赖项右击管理nuget程序包

在当前界面输入System.Data.SqlClient,如下图

点击安装即可,安装成功后如下图:

第二步,安装XiaoFeng程序包

和第一步一样在管理Nuget程序包里输入 XiaoFeng ,然后安装即可。

第三步,开始写程序

  1. var data = new XiaoFeng.Data.DataHelper(new XiaoFeng.Data.ConnectionConfig
  2. {
  3. ProviderType= XiaoFeng.Data.DbProviderType.SqlServer,
  4. ConnectionString= "server=.;uid=testuser;pwd=123;database=Fay_TestDb;"
  5. });
  6. var dt = data.ExecuteDataTable("select * from F_Tb_Account;");

ConnectionConfig类是一个数据库连接配置类,下边代码就是 配置类的属性,不再赘述。

  1. //
  2. // 摘要:
  3. // 驱动类型
  4. [JsonConverter(typeof(StringEnumConverter))]
  5. [Description("驱动类型")]
  6. public DbProviderType ProviderType { get; set; }
  7. //
  8. // 摘要:
  9. // 数据库连接字符串
  10. [Description("数据库连接字符串")]
  11. public string ConnectionString { get; set; }
  12. //
  13. // 摘要:
  14. // 是否启用事务处理
  15. [Description("是否启用事务处理")]
  16. public bool IsTransaction { get; set; }
  17. //
  18. // 摘要:
  19. // 获取或设置在终止尝试执行命令并生成错误之前的等待时间
  20. [Description("执行超时时间")]
  21. public int CommandTimeOut { get; set; }
  22. //
  23. // 摘要:
  24. // 缓存时长 单位为秒 0为永久缓存
  25. [Description("缓存时长 单位为秒 0为永久缓存")]
  26. public int CacheTimeOut { get; set; }
  27. //
  28. // 摘要:
  29. // 缓存类型 0不缓存
  30. [Description("缓存类型 Default 默认,No 不缓存,Memory 内存,Disk 磁盘,Redis,Memcache,MongoDB")]
  31. [JsonConverter(typeof(StringEnumConverter))]
  32. public CacheType CacheType { get; set; }
  33. //
  34. // 摘要:
  35. // 事务级别
  36. [Description("事务级别 DbNull 空级别,Serializable 串行读,RepeatableRead 可重复读,ReadCommitted 提交读,ReadUncommitted 未提交读,Snapshot 隔离未提交读,Chaos 混乱读,Unspecified 未指定")]
  37. [JsonConverter(typeof(StringEnumConverter))]
  38. public IsolationLevel IsolationLevel { get; set; }
  39. //
  40. // 摘要:
  41. // 是否启用连接池
  42. [Description("是否启用连接池")]
  43. public bool IsPool { get; set; }
  44. //
  45. // 摘要:
  46. // 应用池最大数量
  47. [Description("连接池最大数量")]
  48. public int MaxPool { get; set; }

接下来继续说其它用法

1.直接执行SQL语句

var non1 = data.ExecuteNonQuery("insert into F_Tb_Account(Account,Password) values('jacky','admin');"); non1值,如果non1是-1则表示 执行出错,可以通过data.ErrorMessage拿到最后一次执行出错的错误信息 如果non1是大于等于0则表示执行SQL语句后所执行的行数

2.返回DataTable

var dt = data.ExecuteDataTable("select * from F_Tb_Account;"); dt就是一个datatable

3.直接返回首行首列

var val1 = data.ExecuteScalar("select Acount from F_Tb_Account;"); val1类型是object对象,根据数据库的值不同我们可以自定义转换如:var val2 = (int)val1;也可以用XiaoFeng自带的扩展方法,var val2 = val1.ToCast<int>();

4.直接返回DataReader

var dataReader = data.ExecuteReader("select * from F_Tb_Account;"); dataReader就是DataReader对象

5.直接返回DataSet

var dataSet = data.ExecuteDataSet("select * from F_Tb_Account;select * from F_Tb_Account;"); dataSet就是DataSet对象

6.执行存储过程

  1. var data = data.ExecuteDataTable("proc_name", System.Data.CommandType.StoredProcedure, new System.Data.Common.DbParameter[]
  2. {
  3. data.MakeParam(@"Account","jacky")
  4. });

7.SQL语句带存储参数

  1. var data2 = data.ExecuteDataTable("select * from F_Tb_Account where Account=@Account;", new System.Data.Common.DbParameter[]
  2. {
  3. data.MakeParam(@"@Account","jacky")
  4. });

8.直接转换成对象

var models = data.QueryList<Account>("select * from F_Tb_Account"); var model = data.Query<Account>("select * from F_Tb_Account"); 其实这里面也是在内部调用了 DataTable转List<Model>方法,下边是方法体代码

  1. public T Query<T>(string SQL)
  2. {
  3. if (SQL.IsNullOrEmpty())
  4. {
  5. return default(T);
  6. }
  7. ValueTypes valueType = typeof(T).GetValueType();
  8. T result = default(T);
  9. switch (valueType)
  10. {
  11. case ValueTypes.Value:
  12. case ValueTypes.Enum:
  13. case ValueTypes.String:
  14. return ExecuteScalar(SQL).ToCast<T>();
  15. case ValueTypes.Class:
  16. case ValueTypes.Struct:
  17. return ExecuteDataTable(SQL).ToEntity<T>();
  18. default:
  19. return result;
  20. }
  21. }
  22. public List<T> QueryList<T>(string SQL)
  23. {
  24. if (SQL.IsNullOrEmpty())
  25. {
  26. return new List<T>();
  27. }
  28. return ExecuteDataTable(SQL).ToList<T>();
  29. }

到目前基本功能已经介绍完毕,运行也可以用线程池来操作,自己可以慢慢摸索,不再多多介绍。 下边把整体代码再列一下

  1. var data = new XiaoFeng.Data.DataHelper(new XiaoFeng.Data.ConnectionConfig
  2. {
  3. ProviderType= XiaoFeng.Data.DbProviderType.SqlServer,
  4. ConnectionString= "server=.;uid=testuser;pwd=123;database=Fay_TestDb;"
  5. });
  6. var dt = data.ExecuteDataTable("select * from F_Tb_Account;");
  7. var non1 = data.ExecuteNonQuery("insert into F_Tb_Account(Account,Password) values('jacky','admin');");
  8. var val1 = data.ExecuteScalar("select Acount from F_Tb_Account;");
  9. var dataReader = data.ExecuteReader("select * from F_Tb_Account;");
  10. var dataSet = data.ExecuteDataSet("select * from F_Tb_Account;select * from F_Tb_Account;");
  11. var dta = data.ExecuteDataTable("proc_name", System.Data.CommandType.StoredProcedure, new System.Data.Common.DbParameter[]
  12. {
  13. data.MakeParam(@"@Account","jacky")
  14. });
  15. var data2 = data.ExecuteDataTable("select * from F_Tb_Account where Account=@Account;", new System.Data.Common.DbParameter[]
  16. {
  17. data.MakeParam(@"@Account","jacky")
  18. });
  19. var models = data.QueryList<Account>("select * from F_Tb_Account");
  20. var model = data.Query<Account>("select top 1 * from F_Tb_Account");

开源地址:XiaoFeng/Threading at master · zhuovi/XiaoFeng · GitHub

语雀地址:作业调度 · 语雀

开源不易,多多支持~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/403470
推荐阅读
相关标签
  

闽ICP备14008679号