一.什么是Gc.Db?
Gc.Db是一套基于ADO.Net数据库快速开发框架。支持数据库种类有MSSql、MySql、Oracle、Sqlite、Access数据库;对各数据库操作完全是基于接口操作;扩展封装了另类对存储过程和参数化Sql语句操作,操作安全、简单;对单表增加ORM功能,提高了开发效率。
二.Gc.Db框架特点?
(1)支行数据库种类多。支持对MSSql、MySql、Oracle、Sqlite、Access数据库操作,支持对以上数据库sql语句、参数化SQL语句、存储过程、事务操作。
(2)对各数据库操作基于接口开发。对不同类型数据库操作此全部是基于接口开发,都实现同一个接口IGcDbHelper,配合反射或Unity可以实现切换数据库及业务逻辑零代码,提高了内聚耦合性.
(3)支持扩展参数化或存储过程操作。使用扩展封装自定义参数用法,提高代码安全性和开发效率。
(4)Gc.Db配置简单和使用起来都是非常简单,只需作实体类中作下配置,引入Gc.Db和Gc.Da dll文件就可以了。
(5)Gc.Db 提供了方便对数据库参数化操作功能,Orm功能也全都是使用参数化SQL语句来完成,保证了数据安全性。
三.Gc.Db框架使用方法:
1.实体模块层。
实体类:UserInfo.
在实体模型层项目Model中引用Gc.Dal这个dll文件,自己添加实体类,为每个属性添加自定义属性,请注意如果使用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普通字段名。
具体代码见项目:Model.
2.数据访问接口层。
数据访问层接口层:IUserInfoDal、IUserInfoDal2.
这两个接口分别包含此框架提供所有测试方法的接口方法。
3.数据访问层。
数据访问层测试类:UserInfoDal、UserInfoDal2。
使用时在数据访问层Gc.Dal中引用Gc.Dal、Gc.Db 这两个dll文件,自己添加数据访问层类.通过UserInfoDal中包含基于单表ORM方法,同时UserInfoDal2中包含Gc.Db框架提供对各种数据库操作的所有方法使用案例。
在这两个测试类中提供了通过反射和unity创建Gc.Db框架对MSSql数据库操作对象两种方法,大家可以根据自己业务场景和习惯来选择以上提供方法之一或选择其它ioc框架。
具体代码见项目:Gc.Dal.
public class UserInfoDal : IUserInfoDal { #region private variable private static string dbConnstring = ConfigHelper.GetConfigAppString("TestDbConnstring"); private static string pramStr = ConfigHelper.GetConfigAppString("DbPramStr"); #region 方法1 private IGcDbHelper dbHelper = UnityHelper.GetDefaultContainer().Resolve<IGcDbHelper>("IGcDbHelper"); #endregion #region 方法2 //private static string GcDbAssembelPath = ConfigHelper.GetConfigAppString("GcDbAssembelPath"); //private static string GcDbMsSqlNamePath = ConfigHelper.GetConfigAppString("GcDbMsSqlNamePath"); //private IGcDbHelper dbHelper = (IGcDbHelper)DataInstanceHelper.CreateObjectNoCache(GcDbAssembelPath, GcDbMsSqlNamePath); #endregion #endregion #region public method /// <summary> /// 保存数据--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool Insert(UserInfo t) { bool result = true; try { dbHelper.Insert<UserInfo>(dbConnstring,t); } catch (Exception ex) { result = false; } return result; } /// <summary> /// 根据主键删除数据--create by guochao /// </summary> /// <param name="UserId"></param> /// <returns></returns> public bool Delete(int UserId) { bool result = true; try { dbHelper.Delete<UserInfo>(dbConnstring, UserId); } catch (Exception ex) { result = false; } return result; } /// <summary> /// 根据参数化SQL语句和参数/非参数化SQL语句删除数据--create by guochao /// </summary> /// <param name="sqlFilter"></param> /// <param name="args"></param> /// <returns></returns> public bool DeleteListByFilter(string sqlFilter, params object[] args) { bool result = true; try { dbHelper.DeleteListByFilter<UserInfo>(dbConnstring, sqlFilter,args); } catch (Exception ex) { result = false; } return result; } /// <summary> /// 更改数据--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool Update(UserInfo t) { bool result = true; try { dbHelper.Update<UserInfo>(dbConnstring, t); } catch (Exception ex) { result = false; } return result; } /// <summary> /// 根据实体主键查询数据--create by guocha /// </summary> /// <param name="UserId"></param> /// <returns></returns> public UserInfo GetModel(int UserId) { UserInfo t = null; try { t = dbHelper.Find<UserInfo>(dbConnstring, UserId); } catch (Exception ex) { } return t; } /// <summary> /// 返回表最主键最大值---create by guochao /// </summary> /// <returns></returns> public int GetMaxTid() { int maxId = 0; object maxValue = dbHelper.GetMaxColumnValu(dbConnstring, "UserId","UserInfo"); if (maxValue != null) { maxId = int.Parse(maxValue.ToString()); } return maxId; } /// <summary> /// 根据参数化SQL语句和参数/非参数化SQL语句查询数据--create by guochao /// </summary> /// <param name="sqlFilter"></param> /// <param name="args"></param> /// <returns></returns> public List<UserInfo> GetListByFilter(string sqlFilter, params object[] args) { List<UserInfo> list = null; try { list = dbHelper.GetListByFilter<UserInfo>(dbConnstring, sqlFilter,args); } catch (Exception ex) { } return list; } /// <summary> /// 根据参数化SQL语句和参数/非参数化SQL语句、每页数量、当前页数查询数据--create by guochao /// </summary> /// <param name="sqlFilter"></param> /// <param name="args"></param> /// <param name="pageSize"></param> /// <param name="pageIndex"></param> /// <returns></returns> public List<UserInfo> GetPageListByFilter(string sqlFilter, int pageSize, int pageIndex, params object[] args) { List<UserInfo> list = null; try { int startNum = pageSize * (pageIndex - 1) + 1; int endNum = pageSize * pageSize; StringBuilder sql = new StringBuilder("select * from "); sql.Append("("); sql.Append("select ROW_NUMBER() over(order by UserId asc) num,* from UserInfo "); if (!string.IsNullOrEmpty(sqlFilter)) { sql.Append("where " + sqlFilter); } sql.AppendFormat(") as t where t.num between {0} and {1}", startNum, endNum); DataSet ds; if (args != null) { ds = dbHelper.ExecuteQueryWithSqlPress(dbConnstring, sql.ToString(), CommandType.Text, args); } else { ds = dbHelper.ExecuteQuery(dbConnstring, sql.ToString(), CommandType.Text, null); } if (ds.Tables[0].Rows.Count > 0) { list = DbObjectToEntityHelper.DataTableToEntity<UserInfo>(ds.Tables[0]); } } catch (Exception ex) { } return list; } #endregion }
public class UserInfoDal2 : IUserInfoDal2 { #region private variable private static string dbConnstring = ConfigHelper.GetConfigAppString("TestDbConnstring"); private static string pramStr = ConfigHelper.GetConfigAppString("DbPramStr"); #region 方法1 private IGcDbHelper dbHelper = UnityHelper.GetDefaultContainer().Resolve<IGcDbHelper>("IGcDbHelper"); #endregion #region 方法2 //private static string GcDbAssembelPath = ConfigHelper.GetConfigAppString("GcDbAssembelPath"); //private static string GcDbMsSqlNamePath = ConfigHelper.GetConfigAppString("GcDbMsSqlNamePath"); //private IGcDbHelper dbHelper = (IGcDbHelper)DataInstanceHelper.CreateObjectNoCache(GcDbAssembelPath, GcDbMsSqlNamePath); #endregion #endregion #region public method /// <summary> /// 测试ExecuteNonQuery方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteNonQuery1(int UserId) { bool result = true; string sqlStr = string.Format("delete from UserInfo where UserId={0}", UserId); try { dbHelper.ExecuteNonQuery(dbConnstring, sqlStr, CommandType.Text, null); } catch (Exception ex) { result = false; } return result; } /// <summary> /// 测试ExecuteNonQuery方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteNonQuery2(int UserId) { bool result = true; string sqlStr = string.Format("delete from UserInfo where UserId={0}UserId", pramStr); try { IDbDataParameter[] parameters = { dbHelper.CreateParam("UserId",UserId) }; dbHelper.ExecuteNonQuery(dbConnstring, sqlStr, CommandType.Text, parameters); } catch (Exception ex) { result = false; } return result; } /// 测试ExecuteNonQueryWithSqlPress方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteNonQueryWithSqlPress1(int UserId) { bool result = true; string sqlStr = string.Format("delete from UserInfo where UserId={0}", UserId); try { dbHelper.ExecuteNonQueryWithSqlPress(dbConnstring, sqlStr, CommandType.Text, null); } catch (Exception ex) { result = false; } return result; } /// <summary> /// 测试ExecuteNonQueryWithSqlPress方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteNonQueryWithSqlPress2(int UserId) { bool result = true; string sqlStr = string.Format("delete from UserInfo where UserId={0}p0", pramStr, UserId); try { dbHelper.ExecuteNonQueryWithSqlPress(dbConnstring, sqlStr, CommandType.Text, UserId); } catch (Exception ex) { result = false; } return result; } /// 测试ExecuteQuery方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public DataSet TestExecuteQuery1(int UserId) { string sqlStr = string.Format("select * from UserInfo where UserId={0}", UserId); try { DataSet ds=dbHelper.ExecuteQuery(dbConnstring, sqlStr, CommandType.Text, null); return ds; } catch (Exception ex) { return null; } } /// <summary> /// 测试ExecuteQuery方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteQuery2(int UserId) { bool result = true; string sqlStr = string.Format("select * UserInfo where UserId={0}UserId", pramStr); try { IDbDataParameter[] parameters = { dbHelper.CreateParam("UserId",UserId) }; dbHelper.ExecuteQuery(dbConnstring, sqlStr, CommandType.Text, parameters); } catch (Exception ex) { result = false; } return result; } /// 测试ExecuteQueryWithSqlPress方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public DataSet TestExecuteQueryWithSqlPress1(int UserId) { string sqlStr = string.Format("select * from UserInfo where UserId={0}", UserId); try { DataSet ds = dbHelper.ExecuteQueryWithSqlPress(dbConnstring, sqlStr, CommandType.Text, null); return ds; } catch (Exception ex) { return null; } } /// <summary> /// 测试ExecuteQueryWithSqlPress方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteQueryWithSqlPress2(int UserId) { bool result = true; string sqlStr = string.Format("select * UserInfo where UserId={0}p0", pramStr); try { dbHelper.ExecuteNonQueryWithSqlPress(dbConnstring, sqlStr, CommandType.Text, UserId); } catch (Exception ex) { result = false; } return result; } /// 测试ExecuteReader方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteReader1(int UserId) { string sqlStr = string.Format("select UserName from UserInfo where UserId={0}", UserId); string userNamsStr = ""; try { IDataReader red= dbHelper.ExecuteReader(dbConnstring, sqlStr, CommandType.Text, null); if (red != null) { userNamsStr = Convert.ToString(red["UserName"].ToString()); red.Close(); } } catch (Exception ex) { } return userNamsStr; } /// <summary> /// 测试ExecuteReader方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteReader2(int UserId) { string userNamsStr = ""; string sqlStr = string.Format("select UserName UserInfo where UserId={0}UserId", pramStr); try { IDbDataParameter[] parameters = { dbHelper.CreateParam("UserId",UserId) }; IDataReader red = dbHelper.ExecuteReader(dbConnstring, sqlStr, CommandType.Text, parameters); if (red != null) { userNamsStr = Convert.ToString(red["UserName"].ToString()); red.Close(); } } catch (Exception ex) { } return userNamsStr = "";; } /// 测试ExecuteReaderWithSqlPress方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteReaderWithSqlPress1(int UserId) { string sqlStr = string.Format("select UserName from UserInfo where UserId={0}", UserId); string userNamsStr = ""; try { IDataReader red = dbHelper.ExecuteReaderWithSqlPress(dbConnstring, sqlStr, CommandType.Text, null); if (red != null) { userNamsStr = Convert.ToString(red["UserName"].ToString()); red.Close(); } } catch (Exception ex) { } return userNamsStr; } /// <summary> /// 测试ExecuteReader方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteReaderWithSqlPress2(int UserId) { string userNamsStr = ""; string sqlStr = string.Format("select UserName UserInfo where UserId={0}p0", pramStr); try { IDataReader red = dbHelper.ExecuteReaderWithSqlPress(dbConnstring, sqlStr, CommandType.Text, UserId); if (red != null) { userNamsStr = Convert.ToString(red["UserName"].ToString()); red.Close(); } } catch (Exception ex) { } return userNamsStr = ""; ; } /// 测试ExecuteScalar方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteScalar1(int UserId) { string sqlStr = string.Format("select UserName from UserInfo where UserId={0}", UserId); string userNamsStr = ""; try { object objVlaue = dbHelper.ExecuteScalar(dbConnstring, sqlStr, CommandType.Text, null); if (objVlaue != null) { userNamsStr = Convert.ToString(objVlaue); } return userNamsStr; } catch (Exception ex) { return null; } } /// <summary> /// 测试ExecuteReader方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteScalar2(int UserId) { string userNamsStr = ""; string sqlStr = string.Format("select UserName UserInfo where UserId={0}UserId", pramStr); try { IDbDataParameter[] parameters = { dbHelper.CreateParam("UserId",UserId) }; object objVlaue = dbHelper.ExecuteScalar(dbConnstring, sqlStr, CommandType.Text, parameters); if (objVlaue != null) { userNamsStr = Convert.ToString(objVlaue); } } catch (Exception ex) { } return userNamsStr = ""; ; } /// 测试ExecuteReaderWithSqlPress方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteScalarWithSqlPress1(int UserId) { string sqlStr = string.Format("select UserName from UserInfo where UserId={0}", UserId); string userNamsStr = ""; try { object objVlaue = dbHelper.ExecuteScalarWithSqlPress(dbConnstring, sqlStr, CommandType.Text, null); if (objVlaue != null) { userNamsStr = Convert.ToString(objVlaue); } return userNamsStr; } catch (Exception ex) { } return userNamsStr; } /// <summary> /// 测试ExecuteReader方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteScalarWithSqlPress2(int UserId) { string userNamsStr = ""; string sqlStr = string.Format("select UserName UserInfo where UserId={0}p0", pramStr); try { object objVlaue = dbHelper.ExecuteScalarWithSqlPress(dbConnstring, sqlStr, CommandType.Text, UserId); if (objVlaue != null) { userNamsStr = Convert.ToString(objVlaue); } return userNamsStr; } catch (Exception ex) { } return userNamsStr = ""; ; } /// <summary> /// 测试ExecuteSqlTranNoParame方法--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteSqlTranNoParame(int UserId) { bool result = true; List<string> sqlList = new List<string>(); string sqlStr = string.Format("delete from UserInfo where UserId={0}", UserId); sqlList.Add(sqlStr); try { dbHelper.ExecuteSqlTranNoParame(dbConnstring, sqlList); } catch (Exception ex) { result = false; } return result; } /// <summary> /// 测试ExecuteSqlTranWithParame方法--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteSqlTranWithParame(int UserId) { bool result = true; Hashtable sqlList = new Hashtable(); string sqlStr = string.Format("delete from UserInfo where UserId={0}UserId", pramStr); IDbDataParameter[] parameters = { dbHelper.CreateParam("UserId",UserId) }; sqlList.Add(sqlStr,parameters); try { dbHelper.ExecuteSqlTranWithParame(dbConnstring, sqlList,CommandType.Text); } catch (Exception ex) { result = false; } return result; } #endregion }
4.业务逻辑层。
业务逻辑层测试类:UserInfoBll、UserInfoBll2.
在业务逻辑层在提供了通过反射和unity创建Gc.Db框架对数据访问层对象两种方法,大家可以根据自己业务场景和习惯来选择以上提供方法之一或选择其它ioc框架。具体代码见项目:Gc.Bll.
public class UserInfoBll { #region private variable #region 方法1 //private IUserInfoDal userInfoDal = UnityHelper.GetDefaultContainer().Resolve<IUserInfoDal>("IUserInfoDal"); #endregion #region 方法2 private static string DalAssembelPath = ConfigHelper.GetConfigAppString("DalAssembelPath"); private static string UserinfoDalNamePath = ConfigHelper.GetConfigAppString("UserinfoDalNamePath"); private IUserInfoDal userInfoDal = (IUserInfoDal)DataInstanceHelper.CreateObjectNoCache(DalAssembelPath, UserinfoDalNamePath); #endregion #endregion #region public method /// <summary> /// 保存数据--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool Insert(UserInfo t) { bool result = userInfoDal.Insert(t); return result; } /// <summary> /// 根据主键删除数据--create by guochao /// </summary> /// <param name="Id"></param> /// <returns></returns> public bool Delete(int Id) { bool result = userInfoDal.Delete(Id); return result; } /// <summary> /// 根据参数化SQL语句和参数/非参数化SQL语句删除数据--create by guochao /// </summary> /// <param name="sqlFilter"></param> /// <param name="args"></param> /// <returns></returns> public bool DeleteListByFilter(string sqlFilter, params object[] args) { bool result = userInfoDal.DeleteListByFilter(sqlFilter,args); return result; } /// <summary> /// 更改数据--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool Update(UserInfo t) { bool result = userInfoDal.Update(t); return result; } /// <summary> /// 根据实体主键查询数据--create by guocha /// </summary> /// <param name="Id"></param> /// <returns></returns> public UserInfo GetModel(int Id) { UserInfo t = userInfoDal.GetModel(Id); return t; } /// <summary> /// 返回表最主键最大值---create by guochao /// </summary> /// <returns></returns> public int GetMaxTid() { return userInfoDal.GetMaxTid(); } /// <summary> /// 根据参数化SQL语句和参数/非参数化SQL语句查询数据--create by guochao /// </summary> /// <param name="sqlFilter"></param> /// <param name="args"></param> /// <returns></returns> public List<UserInfo> GetListByFilter(string sqlFilter, params object[] args) { return userInfoDal.GetListByFilter(sqlFilter,args); } /// <summary> /// 根据参数化SQL语句和参数/非参数化SQL语句、每页数量、当前页数查询数据--create by guochao /// </summary> /// <param name="sqlFilter"></param> /// <param name="args"></param> /// <param name="pageSize"></param> /// <param name="pageIndex"></param> /// <returns></returns> public List<UserInfo> GetPageListByFilter(string sqlFilter, int pageSize, int pageIndex, params object[] args) { return userInfoDal.GetPageListByFilter(sqlFilter,pageSize,pageIndex,args); } #endregion }
public class UserInfoBll2 { #region private variable #region 方法1 //private IUserInfoDal2 userInfoDal = UnityHelper.GetDefaultContainer().Resolve<IUserInfoDal2>("IUserInfoDal2"); #endregion #region 方法2 private static string DalAssembelPath = ConfigHelper.GetConfigAppString("DalAssembelPath"); private static string UserinfoDalNamePath = ConfigHelper.GetConfigAppString("UserinfoDal2NamePath"); private IUserInfoDal2 userInfoDal = (IUserInfoDal2)DataInstanceHelper.CreateObjectNoCache(DalAssembelPath, UserinfoDalNamePath); #endregion #endregion #region public method /// <summary> /// 测试ExecuteNonQuery方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteNonQuery1(int UserId) { return userInfoDal.TestExecuteNonQuery1(UserId); } /// <summary> /// 测试ExecuteNonQuery方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteNonQuery2(int UserId) { return userInfoDal.TestExecuteNonQuery2(UserId); } /// 测试ExecuteNonQueryWithSqlPress方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteNonQueryWithSqlPress1(int UserId) { return userInfoDal.TestExecuteNonQueryWithSqlPress1(UserId); } /// <summary> /// 测试ExecuteNonQueryWithSqlPress方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteNonQueryWithSqlPress2(int UserId) { return userInfoDal.TestExecuteNonQueryWithSqlPress2(UserId); } /// 测试ExecuteQuery方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public DataSet TestExecuteQuery1(int UserId) { return userInfoDal.TestExecuteQuery1(UserId); } /// <summary> /// 测试ExecuteQuery方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteQuery2(int UserId) { return userInfoDal.TestExecuteQuery2(UserId); } /// 测试ExecuteQueryWithSqlPress方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public DataSet TestExecuteQueryWithSqlPress1(int UserId) { return userInfoDal.TestExecuteQueryWithSqlPress1(UserId); } /// <summary> /// 测试ExecuteQueryWithSqlPress方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteQueryWithSqlPress2(int UserId) { return userInfoDal.TestExecuteQueryWithSqlPress2(UserId); } /// 测试ExecuteReader方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteReader1(int UserId) { return userInfoDal.TestExecuteReader1(UserId); } /// <summary> /// 测试ExecuteReader方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteReader2(int UserId) { return userInfoDal.TestExecuteReader2(UserId); } /// 测试ExecuteReaderWithSqlPress方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteReaderWithSqlPress1(int UserId) { return userInfoDal.TestExecuteReaderWithSqlPress1(UserId); } /// <summary> /// 测试ExecuteReader方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteReaderWithSqlPress2(int UserId) { return userInfoDal.TestExecuteReaderWithSqlPress2(UserId); } /// 测试ExecuteScalar方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteScalar1(int UserId) { return userInfoDal.TestExecuteScalar1(UserId); } /// <summary> /// 测试ExecuteReader方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteScalar2(int UserId) { return userInfoDal.TestExecuteScalar2(UserId); } /// 测试ExecuteReaderWithSqlPress方法1--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteScalarWithSqlPress1(int UserId) { return userInfoDal.TestExecuteScalarWithSqlPress1(UserId); } /// <summary> /// 测试ExecuteReader方法2--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public string TestExecuteScalarWithSqlPress2(int UserId) { return userInfoDal.TestExecuteScalarWithSqlPress2(UserId); } /// <summary> /// 测试ExecuteSqlTranNoParame方法--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteSqlTranNoParame(int UserId) { return userInfoDal.TestExecuteSqlTranNoParame(UserId); } /// <summary> /// 测试ExecuteSqlTranWithParame方法--create by guochao /// </summary> /// <param name="t"></param> /// <returns></returns> public bool TestExecuteSqlTranWithParame(int UserId) { return userInfoDal.TestExecuteSqlTranWithParame(UserId); } #endregion }
5.网站。
网站部分调用代码及两个页面测试页面,详细配置见web.config文件。
注:以下两个测试代码里没有放数据库,大家自己建个数据库,执行下代码目录db下脚本文件,然后根据自己需要改下数据库配置串就行。其中TestGcDb2演示如何快速使用Gc.Db框架的简单示例,TestGcDb演示了如何配合使用unity和反射如何构建一个高内聚第耦合应用程序。
个人邮箱:joyet_guochao@163.com,有问题可以留言和发邮件。