【原创】封装数据库操作以及在Razol引擎中使用
数据库操作是一件繁琐的事情,不停的读取,增加,删除等行为,而且存在大量的拼接字符串操作,稍微不注意很有可能就出错,为此我们要简化数据库操作的代码来让数据库操作变的更为简单一点,自从发表上一篇文章MVC3中使用WebMatrix.Data 来操作数据库,受到很多老鸟的指点,我也很赞同不在页面上直接写sql语句,当然我自己也不会这么写,只是在某些特殊的场景可能才会用到。
另外我不得不说Razol是个非常强大的模板引擎,之前我介绍的是推荐一个模板引擎 - templateengine 。同时Razol非常适合在CMS系统中作为模板引擎的,功能强大,代码简介,这都是大家向往的。
1 读取操作
var db = DatabaseHelper.Selete("c_user");
Rozal中使用,读取的表为c_user,返回的类型是IEnumerable<dynamic>,所以可以直接编译而不需要再转换类型了。
<ul> @foreach (var item in db) { <li>@item.ID - @item.Name - @item.Password</li> } </ul>
Selete方法实现了四个重载方法
//读取id为1的数据 DatabaseHelper.Selete("c_user","id=1"); //读取前10条,classid为1的数据 DatabaseHelper.Selete("c_user","10","classid=1"); //读取前10条,classid为1的数据,并且排序方式是inputdate desc DatabaseHelper.Selete("c_user","10","classid=1","inputdate desc"); //引入参数,防止sql注入 DatabaseHelper.Selete("c_user","10","classid=@0 and title='@1'","inputdate desc","1","test");
2 添加操作
支持Dictionary<string, string>和Hashtable
Dictionary<string, string> d = new Dictionary<string, string>(); d.Add("name", "title11"); d.Add("Password", "xxxx"); DatabaseHelper.Insert("c_user", d);
Hashtable ht = new Hashtable(); ht.Add("name", "title1xxxx"); ht.Add("Password", "yyyyy"); DatabaseHelper.Insert("c_user", ht);
3 更新操作
同样支持Dictionary<string, string>和Hashtable
Dictionary<string, string> d = new Dictionary<string, string>(); d.Add("name", "title11"); d.Add("Password", "xxxx"); DatabaseHelper.Update("c_user", d, "id=@0","6")
Hashtable ht = new Hashtable(); ht.Add("name", "title1xxxx"); ht.Add("Password", "yyyyy"); DatabaseHelper.Update("c_user", ht, "id=@0","6")
4 删除操作
DatabaseHelper.Delete("c_user", "id=@0", "3")
DatabaseHelper.Delete("c_user")
5 统计数据
var count = DatabaseHelper.Count("c_user");
当前有 @count 条数据
同时支持参数
DatabaseHelper.Count("c_user","classid=@0","1")
6 返回某行某列的值
返回字段名为name,id为1的值
var value = DatabaseHelper.Value("c_user", "name", "id=1");
数据库操作都是根据WebMatrix.Data来进行封装的,欢迎大家多提意见。