首页 > 代码库 > .net高效数据库访问框架(附带orm功能)
.net高效数据库访问框架(附带orm功能)
Gc.Db和Gc.Cache相关文章我已经写有一段时间了,谢谢大家关注。最近看了以前写的Gc.Db和SimpleOrm,对这两个框架作了优化和整合。此篇文章主要Gc.Db优化内容作下介绍。
下篇文章会配合着我整理的对Memcached和Redis分布式缓存框架Gc.CacheGc.Db和Gc.Cache整理成一个简单三层Demo.谢谢大家继续关注。
一.什么是Gc.Db及优化内容?
Gc.Db是基于Ado.net编写的数据库框架.
(1)目前支持MsSQL、Mysql、Sqlite、Oracle、Oledb数据库.
(2)支持对以上数据库sql语句、参数化SQL语句、存储过程、事务操作。
(3)Gc.Db编写宗旨:开发快捷,性能。此框架本身就是数据库访问框架,只是为了让各位开发者编写更少对单表基本操作重复代码,添加了部分ORM功能,对单表基本操作(增加、删除、更改、查询)由GcDbContext来完成,
同时对单或多表复杂操作由GcDbHelper来完成,所有数据库的操作都由这两个类完成。
(4)Gc.Db配置简单和使用起来都是非常简单,只需作实体类中作下配置,引入Gc.Db和Gc.Da dll文件就可以了。
(5)Gc.Db 提供了方便对数据库参数化操作功能,Orm功能也全都是使用参数化SQL语句来完成,保证了数据安全性。
二.Gc.Db框架使用方法:
1.下载我编写的Gc.Db和Gc.Da dll文件(这个一会会提供下载地址),在自己项目中引用这两个dll.
2.自己添加实体类,为每个属性添加自定义属性,请注意如果使用orm功能,每张表必须有主键,实体类中代码如下。
public class UserInfo { [Id("UserId")] public int UserId { get; set; } [Column("UserName")] public string UserName { get; set; } [Column("UserPwd")] public string UserPwd { get; set; } [Column("UserEmail")] public string UserEmail { get; set; } [Column("TrueName")] public string TrueName { get; set; } [Column("IsLock")] public int IsLock { get; set; } [Column("CreateId")] public int CreateId { get; set; } [Column("CreateTime")] public DateTime CreateTime { get; set; } }
[Id("UserId")]表示UserId为主键。
[Column("UserName")]表示UserName普通字段名
3.在数据访问类中创建GcDbContext和GcDbHelper对象对数据库进行操作,具体代码如下。
1 /// <summary> 2 /// 数据库连接串 3 /// </summary> 4 private static string dbConnstring = System.Configuration.ConfigurationManager.AppSettings["TestDbConnstring"]; 5 6 /// <summary> 7 /// 数据库参数前缀 8 /// </summary> 9 private static string pramStr = DbOperator.CreateParamStr(GcEnumDbType.MsSql); 10 11 /// <summary> 12 /// 数据库访问对象 13 /// </summary> 14 private IGcDbHelper dbHelper = new GcDbHelper(GcEnumDbType.MsSql); 15 16 /// <summary> 17 /// 提供ORM功能数据库操作对象 18 /// </summary> 19 private GcDbContext<UserInfo> gcContext = new GcDbContext<UserInfo>(dbConnstring, GcEnumDbType.MsSql); 20 21 22 /// <summary> 23 /// 保存数据--create by guochao 24 /// </summary> 25 /// <param name="t">UserInfo对象</param> 26 /// <returns>返回UserInfo对象</returns> 27 public bool Insert(UserInfo t) 28 { 29 bool result = true; 30 try 31 { 32 gcContext.Insert(t); 33 } 34 catch (Exception ex) 35 { 36 result = false; 37 } 38 return result; 39 } 40 41 /// <summary> 42 /// 保存数据--create by guochao 43 /// </summary> 44 /// <param name="t">UserInfo对象</param> 45 /// <returns>返回bool</returns> 46 public bool Insert2(UserInfo t) 47 { 48 bool result = true; 49 StringBuilder sql = new StringBuilder("insert into UserInfo(UserId,UserName,UserPwd,UserEmail,TrueName,IsLock,CreateId,CreateTime) values("); 50 sql.AppendFormat("{0}p0,", pramStr); 51 sql.AppendFormat("{0}p1,", pramStr); 52 sql.AppendFormat("{0}p2,", pramStr); 53 sql.AppendFormat("{0}p3,", pramStr); 54 sql.AppendFormat("{0}p4", pramStr); 55 sql.AppendFormat("{0}p5,", pramStr); 56 sql.AppendFormat("{0}p6", pramStr); 57 sql.AppendFormat("{0}p7", pramStr); 58 sql.Append(")"); 59 try 60 { 61 dbHelper.ExecuteNonQueryWithSqlPress(dbConnstring, sql.ToString(), CommandType.Text, 62 t.UserId, 63 t.UserName, 64 t.UserEmail, 65 t.UserPwd, 66 t.IsLock 67 ); 68 } 69 catch (Exception ex) 70 { 71 result = false; 72 } 73 return result; 74 } 75 76 /// <summary> 77 /// 保存数据--create by guochao 78 /// </summary> 79 /// <param name="t">UserInfo对象</param> 80 /// <returns>返回bool</returns> 81 public bool Insert3(UserInfo t) 82 { 83 bool result = true; 84 StringBuilder sql = new StringBuilder("insert into UserInfo(UserId,UserName,UserPwd,UserEmail,TrueName,IsLock,CreateId,CreateTime) values("); 85 sql.AppendFormat("{0}UserId,", pramStr); 86 sql.AppendFormat("{0}UserName,", pramStr); 87 sql.AppendFormat("{0}UserPwd,", pramStr); 88 sql.AppendFormat("{0}UserEmail,", pramStr); 89 sql.AppendFormat("{0}TrueName,", pramStr); 90 sql.AppendFormat("{0}IsLock,", pramStr); 91 sql.AppendFormat("{0}CreateId,", pramStr); 92 sql.AppendFormat("{0}CreateTime", pramStr); 93 sql.Append(")"); 94 try 95 { 96 IDbDataParameter[] parameters = { 97 dbHelper.CreateParam("UserId",t.UserId), 98 dbHelper.CreateParam("UserName",t.UserName), 99 dbHelper.CreateParam("UserPwd",t.UserPwd),100 dbHelper.CreateParam("UserEmail",t.UserEmail),101 dbHelper.CreateParam("TrueName",t.TrueName),102 dbHelper.CreateParam("IsLock",t.IsLock),103 dbHelper.CreateParam("CreateId",t.UserId),104 dbHelper.CreateParam("CreateTime",t.CreateTime),105 };106 dbHelper.ExecuteNonQuery(dbConnstring, sql.ToString(), CommandType.Text,parameters);107 }108 catch (Exception ex)109 {110 result = false;111 }112 return result;113 }114 115 /// <summary>116 /// 保存数据--create by guochao117 /// </summary>118 /// <param name="t">UserInfo对象</param>119 /// <returns>返回bool</returns>120 public bool Insert4(UserInfo t)121 {122 bool result = true;123 StringBuilder sql = new StringBuilder("insert into UserInfo(UserId,UserName,UserPwd,UserEmail,TrueName,IsLock,CreateId,CreateTime) values(");124 sql.AppendFormat("{0}UserId,", pramStr);125 sql.AppendFormat("{0}UserName,", pramStr);126 sql.AppendFormat("{0}UserPwd,", pramStr);127 sql.AppendFormat("{0}UserEmail,", pramStr);128 sql.AppendFormat("{0}TrueName,", pramStr);129 sql.AppendFormat("{0}IsLock,", pramStr);130 sql.AppendFormat("{0}CreateId,", pramStr);131 sql.AppendFormat("{0}CreateTime", pramStr);132 sql.Append(")");133 try134 {135 IDbDataParameter[] parameters = {136 new SqlParameter(pramStr+"UserId",SqlDbType.Int),137 new SqlParameter(pramStr+"UserName",SqlDbType.NVarChar,50),138 new SqlParameter(pramStr+"UserPwd",SqlDbType.NVarChar,100),139 new SqlParameter(pramStr+"UserEmail",SqlDbType.NVarChar,50),140 new SqlParameter(pramStr+"TrueName",SqlDbType.NVarChar,50),141 new SqlParameter(pramStr+"IsLock",SqlDbType.Int),142 new SqlParameter(pramStr+"CreateId",SqlDbType.Int),143 new SqlParameter(pramStr+"CreateTime",SqlDbType.DateTime),144 };145 parameters[0].Value =http://www.mamicode.com/ t.UserId;146 parameters[1].Value =http://www.mamicode.com/ t.UserName;147 parameters[2].Value =http://www.mamicode.com/ t.UserPwd;148 parameters[3].Value =http://www.mamicode.com/ t.UserEmail;149 parameters[4].Value =http://www.mamicode.com/ t.TrueName;150 parameters[5].Value =http://www.mamicode.com/ t.IsLock;151 parameters[6].Value =http://www.mamicode.com/ t.CreateId;152 parameters[7].Value =http://www.mamicode.com/ t.CreateTime;153 dbHelper.ExecuteNonQuery(dbConnstring, sql.ToString(), CommandType.Text, parameters);154 }155 catch (Exception ex)156 {157 result = false;158 }159 return result;160 }161 162 /// <summary>163 /// 根据主键删除数据--create by guochao164 /// </summary>165 /// <param name="UserId">UserId</param>166 /// <returns>返回bool</returns>167 public bool Delete(int UserId)168 {169 bool result = true;170 try171 {172 gcContext.Delete(UserId);173 }174 catch (Exception ex)175 {176 result = false;177 }178 return result;179 }
以上代码中添加方法分别演示了采用上框架提供了方便的参数数组操作的方法。
个人邮箱:joyet_guochao@163.com,有问题可以留言和发邮件。
注:我这代码里没有放数据库,大家只要根据代码中表字段,自己建个数据库,建个和代码对应数据表,改下数据库配置串就行。
Gc.Db的Demo相关代码下载