原创- -数据层

1总合了n种数据访问层……——……不是很成熟
2. 由于鄙人的懒惰缺少了-传递参数(这部分设计完了但是~~懒得写分析原谅哈),这部分主要采用缓存参数的设计.
3.缺少 DAL.SqlClient.SqlParametersAll.SqlText枚举的定义他用来封装所有的存储过程的名称
4.将要呈现给大家的是一部分中的部分哈~~原因鄙人懒惰~~造成的~~检讨中 14.gif

None.gif          public  ExecState Exec(DAL.SqlClient.SqlParametersAll.SqlText commandText)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif
InBlock.gif            ExecState ren 
= new ExecState();
InBlock.gif            System.Data.SqlClient.SqlConnection sqlCon
=new System.Data.SqlClient.SqlConnection(this.ConnectionString);
InBlock.gif            
InBlock.gif            System.Data.SqlClient.SqlCommand sqlCommand 
= new System.Data.SqlClient.SqlCommand(
InBlock.gif            Enum.GetName(
typeof(DAL.SqlClient.SqlParametersAll.SqlText), commandText), sqlCon);
InBlock.gif
InBlock.gif            sqlCommand.CommandType 
= CommandType.StoredProcedure;
InBlock.gif            
InBlock.gif            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                sqlCon.Open();
InBlock.gif                sqlCommand.Transaction 
= sqlCon.BeginTransaction();
InBlock.gif
InBlock.gif                
//---------------------记录影响的行数
InBlock.gif
                ren.State.Add("NonQuery", sqlCommand.ExecuteNonQuery());
InBlock.gif
InBlock.gif                
//---寻找输出参数
InBlock.gif
                this.SelectOuputParameters(ren, sqlCommand.Parameters);
InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif                
//--成功提交
InBlock.gif
                sqlCommand.Transaction.Commit();
ExpandedSubBlockEnd.gif            }

InBlock.gif            
catch (System.Data.SqlClient.SqlException exp)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
//--失败了回滚
InBlock.gif
                sqlCommand.Transaction.Rollback();
ExpandedSubBlockEnd.gif            }

InBlock.gif            
finally
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
if (sqlCon.State == ConnectionState.Open)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    sqlCon.Close();
InBlock.gif                    sqlCon.Dispose();
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
return ren;
ExpandedBlockEnd.gif        }

None.gif
None.gif        
// --寻找输出参数
None.gif
        
ExpandedBlockStart.gifContractedBlock.gif        
/**/ /// <summary>
InBlock.gif        
/// 寻找输出参数,不用返回数据因为是按引用传递的
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="ren"></param>
ExpandedBlockEnd.gif        
/// <param name="SelectPr"></param>

None.gif          private   void  SelectOuputParameters(ExecState ren, System.Data.SqlClient.SqlParameterCollection SelectPr)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
foreach (System.Data.SqlClient.SqlParameter OnLyPr in SelectPr)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
if (OnLyPr.Direction ==ParameterDirection.InputOutput || OnLyPr.Direction == ParameterDirection.Output)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    ren.State.Add(OnLyPr.ParameterName, OnLyPr.Value);
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedBlockEnd.gif        }

None.gif
None.gif
None.gif    }
None.gif
None.gif    
// ------------执行后的状态
None.gif
     public   class  ExecState
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
//-----------------------------------------存储对应的数据存储在那个组中
InBlock.gif
        public System.Collections.Generic.Dictionary<stringobject> State = new  System.Collections.Generic.Dictionary<string,object>();
InBlock.gif   
ExpandedBlockEnd.gif    }

None.gif}


转载于:https://www.cnblogs.com/ajaxren/archive/2007/04/24/725963.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值