-
数据库操作基本配置与使用作者 : 管理员 发布于 2023-04-25 23:28:01 浏览 624 次当前类库支持MySql,SqlServer,Oledb,SQLite,Oracle,DM等数据库
XiaoFeng.Data.DataHelper,当前类库支持MySql,SqlServer,Oledb,SQLite,Oracle,DM等数据库
下面就以SqlServer为例,详细讲解一下当前类库。
第一步,引用 System.Data.SqlClient驱动库
在VS中的解决方案中,依赖项右击管理nuget程序包
在当前界面输入System.Data.SqlClient,如下图
点击安装即可,安装成功后如下图:
第二步,安装XiaoFeng程序包
和第一步一样在管理Nuget程序包里输入 XiaoFeng ,然后安装即可。
第三步,开始写程序var data = new XiaoFeng.Data.DataHelper(new XiaoFeng.Data.ConnectionConfig { ProviderType= XiaoFeng.Data.DbProviderType.SqlServer, ConnectionString= "server=.;uid=testuser;pwd=123;database=Fay_TestDb;" }); var dt = data.ExecuteDataTable("select * from F_Tb_Account;");
ConnectionConfig类是一个数据库连接配置类,下边代码就是 配置类的属性,不再赘述。
// // 摘要: // 驱动类型 [JsonConverter(typeof(StringEnumConverter))] [Description("驱动类型")] public DbProviderType ProviderType { get; set; } // // 摘要: // 数据库连接字符串 [Description("数据库连接字符串")] public string ConnectionString { get; set; } // // 摘要: // 是否启用事务处理 [Description("是否启用事务处理")] public bool IsTransaction { get; set; } // // 摘要: // 获取或设置在终止尝试执行命令并生成错误之前的等待时间 [Description("执行超时时间")] public int CommandTimeOut { get; set; } // // 摘要: // 缓存时长 单位为秒 0为永久缓存 [Description("缓存时长 单位为秒 0为永久缓存")] public int CacheTimeOut { get; set; } // // 摘要: // 缓存类型 0不缓存 [Description("缓存类型 Default 默认,No 不缓存,Memory 内存,Disk 磁盘,Redis,Memcache,MongoDB")] [JsonConverter(typeof(StringEnumConverter))] public CacheType CacheType { get; set; } // // 摘要: // 事务级别 [Description("事务级别 DbNull 空级别,Serializable 串行读,RepeatableRead 可重复读,ReadCommitted 提交读,ReadUncommitted 未提交读,Snapshot 隔离未提交读,Chaos 混乱读,Unspecified 未指定")] [JsonConverter(typeof(StringEnumConverter))] public IsolationLevel IsolationLevel { get; set; } // // 摘要: // 是否启用连接池 [Description("是否启用连接池")] public bool IsPool { get; set; } // // 摘要: // 应用池最大数量 [Description("连接池最大数量")] 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();
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.执行存储过程var data = data.ExecuteDataTable("proc_name", System.Data.CommandType.StoredProcedure, new System.Data.Common.DbParameter[] { data.MakeParam(@"Account","jacky") });
7.SQL语句带存储参数
var data2 = data.ExecuteDataTable("select * from F_Tb_Account where Account=@Account;", new System.Data.Common.DbParameter[] { data.MakeParam(@"@Account","jacky") });
8.直接转换成对象
var models = data.QueryList(“select from F_Tb_Account”);
var model = data.Query(“select from F_Tb_Account”);
其实这里面也是在内部调用了 DataTable转List方法,下边是方法体代码 public T Query<T>(string SQL) { if (SQL.IsNullOrEmpty()) { return default(T); } ValueTypes valueType = typeof(T).GetValueType(); T result = default(T); switch (valueType) { case ValueTypes.Value: case ValueTypes.Enum: case ValueTypes.String: return ExecuteScalar(SQL).ToCast<T>(); case ValueTypes.Class: case ValueTypes.Struct: return ExecuteDataTable(SQL).ToEntity<T>(); default: return result; } } public List<T> QueryList<T>(string SQL) { if (SQL.IsNullOrEmpty()) { return new List<T>(); } return ExecuteDataTable(SQL).ToList<T>(); }
到目前基本功能已经介绍完毕,运行也可以用线程池来操作,自己可以慢慢摸索,不再多多介绍。
下边把整体代码再列一下var data = new XiaoFeng.Data.DataHelper(new XiaoFeng.Data.ConnectionConfig { ProviderType= XiaoFeng.Data.DbProviderType.SqlServer, ConnectionString= "server=.;uid=testuser;pwd=123;database=Fay_TestDb;" }); var dt = data.ExecuteDataTable("select * from F_Tb_Account;"); var non1 = data.ExecuteNonQuery("insert into F_Tb_Account(Account,Password) values('jacky','admin');"); var val1 = data.ExecuteScalar("select Acount from F_Tb_Account;"); var dataReader = data.ExecuteReader("select * from F_Tb_Account;"); var dataSet = data.ExecuteDataSet("select * from F_Tb_Account;select * from F_Tb_Account;"); var dta = data.ExecuteDataTable("proc_name", System.Data.CommandType.StoredProcedure, new System.Data.Common.DbParameter[] { data.MakeParam(@"@Account","jacky") }); var data2 = data.ExecuteDataTable("select * from F_Tb_Account where Account=@Account;", new System.Data.Common.DbParameter[] { data.MakeParam(@"@Account","jacky") }); var models = data.QueryList<Account>("select * from F_Tb_Account"); var model = data.Query<Account>("select top 1 * from F_Tb_Account");
所有评论(0)