分享一个以前写的基于C#语言操作数据库的小框架
一:前言
这个是以前写的操作MySQL数据库的小型框架,如果是中小型项目用起来也是很不错的,里面提供Filter、ModelPart、Relationship等机制实现操作数据库时的SQL语句的拼接和返回数据的转换功能;
对数据源的参数配置在启动工程的App.config里配置,后面有github的源码地址。
二:用法
代码如下:
class Program { static void Main(string[] args) { var result = DalManager.GetAllRecordsOfTablePart(Student.GetDbTableName, new[] { Student.StuIdProperty, Student.NameProperty }, dt => { // TODO converter,将DataTable转换为List<StudentPart>对象,这里可以改进。 var rst = new List<StudentPart>(); foreach (DataRow row in dt.Rows) { var tmp = new StudentPart(); tmp.StuId = Convert.ToInt64(row[Student.StuIdProperty]); tmp.Name = row[Student.NameProperty].ToString(); rst.Add(tmp); } return rst; }); Console.WriteLine(result.Count); Console.WriteLine(result[0].Name); Console.WriteLine(result[result.Count - 1].Name); Console.ReadKey(); } private class StudentPart { public long StuId; public string Name; } }
上面的DalManager.GetAllRecordsOfTablePart的定义是:
public static List<TResult> GetAllRecordsOfTablePart<TResult>(Func<string> getDbTableName, string[] fields, Func<DataTable, List<TResult>> convert) { var selectPart = string.Join(",", fields); var strCmd = $"select {selectPart} from {getDbTableName()};"; var dt = MySqlHelper.Query(strCmd); return convert(dt); }
第一个参数用来获取要查询的表名,第二个是要查询的字段有哪些,第三个是对查询结果集DataTable进行转换的回调函数。
来看看另一个API定义:
public static int UpdateRecordsByPairsFilters(Func<string> getDbTableName, List<FieldValuePair> pairsForSet, List<FilterInfo> filtersForWhere) { var setPart = SQLHelper.ParsePairsToSetPartExpressionString(pairsForSet); var wherePart = SQLHelper.ParseFiltersToWherePartExpressionString(filtersForWhere); // "update Student set Name = 'WLQ', ClsName = '高三三班' where StuId=2;" var strCmd = $"update {getDbTableName()} set {setPart} where {wherePart};"; return MySqlHelper.ExecuteCmd(strCmd); }
第一个参数同样是要操作的表名,第二个参数是要set的参数列表及对应值;第三个参数是条件,每个FilterInfo对象都是一个条件,如a=b或a like b之类的
,默认它的Relationship是AND,即每个filter是以and的形式拼接,也可以指定filterInfo.Relationship来换成OR;
filter里还有name和value及Express用来指定这个filter的字段名和条件值及这个filter的类型,如等于、like、between等等;
所有的API都在DalManager里,里面都写好了注释,如果有需要的可以自己去看看。
github地址:https://github.com/Silentdoer/CSharpDbTool.git
posted on 2018-02-11 09:38 Silentdoer 阅读(300) 评论(0) 编辑 收藏 举报