分享我的数据访问层

文章来源:IT工程信息网 http://www.systhinker.com/?action-viewnews-itemid-17232

最近做公司的网站,开发语言是。Net。本来是想用户linq来实现数据访问层的,但所用的数据库是oracle的,在网上也找了相关的资料,希望用linq来实现数据访问,最终还是放弃了,原因:没有开发工具的支持,不够稳定。所以就自己写了下些数据访问层的代码。分享给大家,高手看到往指点下。

下面是数据库链接类 

  1 删除

 

 数据访问执行存储过程

   2删除

 

 数据访问过程定义

 1     ///   <summary>
 2           ///  创建用户空间信息
 3           ///   </summary>
 4           ///   <param name="uid"></param>
 5           ///   <returns></returns>
 6           public   static  ooDbProcedure CreateSpaceInfo( long  uid)
 7          {
 8               const   string  sql  =   " insert into oouserinfo (userid,px,py,PURVIEW,BIRTHDAY,HOME,PHONE,QQ,SEX)values(:1,:2,:3,:4,:5,:6,:7,:8,:9) " ;
 9              ooDbProcedure procedure  =   new  ooDbProcedure(sql) { ComType  =  System.Data.CommandType.Text };
10              procedure.AddInParameter( " userid " , uid);
11              procedure.AddInParameter( " px " 0 );
12              procedure.AddInParameter( " py " 0 );
13              procedure.AddInParameter( " PURVIEW " 1 );
14              procedure.AddInParameter( " BIRTHDAY " 0 );
15              procedure.AddInParameter( " HOME " "" );
16              procedure.AddInParameter( " PHONE " "" );
17              procedure.AddInParameter( " QQ " "" );
18              procedure.AddInParameter( " SEX " 0 );
19               return  procedure;
20          }

 

 可以是存储过程,也可以是sql语句,返回一个ooDbProcedure对象,这个对象就可以执行相应的sql操作。如 

 ooDbProcedure.ExecuteNonQuery(ooUserDal.CreateSpaceInfo(userid)); 

 也可以执行带数据读取的sql操作

   1  /// <summary>

 2           ///  根据用户id获取用户对象
 3           ///   </summary>
 4           ///   <param name="uid"></param>
 5           ///   <returns></returns>
 6           public   static  ooDbProcedure GetUser( long  uid)
 7          {
 8               const   string  sql  =   " select * from user " ;
 9              ooDbProcedure procedure  =   new  ooDbProcedure(sql) { ComType  =  System.Data.CommandType.Text };
10              procedure.AddInParameter( " p1 " , uid);
11               return  procedure;
12          } 

 

数据读取方法,也是模型对应关系

  1  /// <summary>

 2           ///  读取用户信息
 3           ///   </summary>
 4           ///   <param name="reader"></param>
 5           ///   <returns></returns>
 6           public   static  ooUser ReadUser(IDataReader reader)
 7          {
 8              ooSafeDataReader saferader  =   new  ooSafeDataReader(reader);
 9               if  (saferader.Read())
10              {
11                  ooUser user  =   new  ooUser();
12                  user.I  =  Convert.ToInt64(saferader.GetValue( " id " ));
13                  user.N  =  saferader.GetString( " uname " );
14                  user.Pho  =  saferader.GetString( " PHOTO " );
15                  user.Em  =  saferader.GetString( " email " ); 16            
26                   return  user;
27              }
28               return   null ;
29          }

 

 那么读取数据操作就可以这样写

1    ///   <summary>
2           ///  根据用户id获取用户
3           ///   </summary>
4           ///   <param name="id"></param>
5           ///   <returns></returns>
6           public  ooUser GetUser( long  id)
7          {
8               return  ooDbProcedure.Excute < ooUser > (ooUserDal.GetUser(id), ooUserDal.ReadUser); 
9          }

 

 获取方法也可加如些业务逻辑

 

文章来源:IT工程信息网 http://www.systhinker.com/?action-viewnews-itemid-17232

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值