更好的使用SQLHelper类

微软提供的Data Access Application Block中的SQLHelper类中封装了最常用的数据操作,各个使用者调用他而写的代码也有很大区别。

对于一个返回DataSet的方法我原来是这样写的:

None.gif public  DataSet GetDepartmentMemberList( int  departmentID)
ExpandedBlockStart.gifContractedBlock.gif  
dot.gif {
InBlock.gif   
try
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif    
string sql = "OA_Department_GetDepartment_Members";
InBlock.gif    
string conn = ConfigurationSettings.AppSettings["strConnection"];
InBlock.gif    SqlParameter[] p 
= 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif     SqlHelper.MakeInParam(
"@departmentID",SqlDbType.Int,4,departmentID)
ExpandedSubBlockEnd.gif    }
;
InBlock.gif    DataSet ds 
= SqlHelper.ExecuteDataset(conn,CommandType.StoredProcedure,sql,p);
InBlock.gif    
return ds;
ExpandedSubBlockEnd.gif    }

InBlock.gif   
catch(System.Data.SqlClient.SqlException er)
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif    
throw new Exception(er.Message);
ExpandedSubBlockEnd.gif   }

ExpandedBlockEnd.gif  }

None.gif

现在我是这样来写的:

None.gif // 连接字符串
None.gif
private   string  _connectionString  =  ConfigurationSettings.AppSettings[ " strConnection " ];
None.gif        
public   string  ConnectionString
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get dot.gif{return this._connectionString;}
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set dot.gif{this._connectionString = value;}
ExpandedBlockEnd.gif        }

None.gif
None.gif
public  DataSet GetNewsToIndexPage( int  NewsTypeID)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
return GetDataSet("yzb_GetNewsToIndexPage",GetNewsToIndexPage_Parameters(NewsTypeID));
ExpandedBlockEnd.gif        }

None.gif
None.gif
// 设置存储过程参数
None.gif
         private  SqlParameter[] GetNewsToIndexPage_Parameters( int  NewsTypeID)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif
InBlock.gif            SqlParameter[] p 
= 
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                SqlHelper.MakeInParam(
"@NewsTypeID",SqlDbType.Int,4,NewsTypeID)
ExpandedSubBlockEnd.gif            }
;
InBlock.gif            
return p;
ExpandedBlockEnd.gif        }

None.gif
None.gif
// 这里才真正调用SqlHelper
None.gif
private  DataSet GetDataSet( string  sql,  params  SqlParameter[] p)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
return SqlHelper.ExecuteDataset(ConnectionString,CommandType.StoredProcedure,sql,p);
ExpandedBlockEnd.gif        }

代码更加灵活,更加安全了:P

反馈

# re: 更好的使用SQLHelper类

2004-8-10 16:28 by sh777
看不出有啥区别

# re: 更好的使用SQLHelper类

2004-8-10 23:01 by ceocio
朋友还需努力啊:)

# re: 更好的使用SQLHelper类

2005-6-15 4:30 by 超级大笨狼
呵呵,我习惯这样写:
System.Data.DataTable dt=SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING_NON_DTC,CommandType.Text,sql).Tables[0];

直接返回DataTable, 返回表集合基本不用,只返回一个table。

string conn = ConfigurationSettings.AppSettings["strConnection"];
我写在SqlHelper.CONN_STRING_NON_DTC里面

MakeInParam代码烦琐,如果查询输入条件不可能有组合SQL,
我直接exec pronamr paraargs

如果查询输入条件存在安全问题,或者带返回参数
再用SqlParameter[] queryParam=new SqlParameter[] {
new SqlParameter("@UserID",SqlDbType.Int)
};
queryParam[0].Value=this.UserID;


# re: 更好的使用SQLHelper类

2005-8-15 17:51 by 风叶
把简单的东西复杂化了
参数集合没必要再独立出去
想想几十个方法几十种参数
搞得都会乱掉的
不好阅读也不好维护

# re: 更好的使用SQLHelper类

2005-8-30 15:14 by 123
这样写
public string ConnectionString
{
get {return this._connectionString;}
set {this._connectionString = value;}
}

是不合适的,最多是
public string ConnectionString
{
get {return this._connectionString;}

}
把它设置为一个只读属性,以网址后面程序在代码里设置它的值,明白不? :)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值