今天费九牛二虎之力才发现一个隐藏的很深的bug。
给我一个教训:简单是最好的。
详细问题如下:
数据访问的架构是这样的:
servlet---------->sessionBean---->DAO--------------->DB
如果需要访问BLOB或者CLOB字段就有加一层帮助类如下
servlet------->sessionBean---->DAO----->OracleLobHelper---->DB
本来上面的结构访问还是比较正常的,但最近发现有些数据查不出来,其中BUG定位的血泪史就不累述了,最后发现是OracleLobHelper出现问题。
简单说,OracleLobHelper 传入的参数为 表名,哈西结构的查询参数,查询的BLOB字段名。三个。
使用hash给preparestatment参数赋值的代码如下。
private void setParameters(PreparedStatement stmt, Map keys);
throws SQLException {
int index = 1;
for (Iterator i = keys.keySet();.iterator();; i.hasNext();;); {
String keyColumn = (String); i.next();;
stmt.setObject(index, keys.get(keyColumn););;
index++;
}
}
问题出现了:就是,当数据表中的字段(查询条件字段)“FORM_VERSION”是“NUMBER(5,1)”而从servlet传递的类型是float时就查不出数据。
以上设计看起来很精巧其实把简单问题复杂话,平白多出一层自然出错几率要多。而且调用起来一点都不方便,类内部耦合性特大,特复杂。
以后要避免类似问题,另外,该问题到底是怎么回事还是不清楚。
这个类不是我写的,嘿嘿。。。。
分享到:
相关推荐
oraclehelper 数据访问类oraclehelper 数据访问类oraclehelper 数据访问类oraclehelper 数据访问类
oraclehelper
OracleHelper for CSharp Like SqlHelper for CSharp
OracleHelper.vb 根據SQLHelper 改編的一個好用的vb類。人人為我,我為人人
Oraclehelper.cs,用于Oracle与c#的数据连接
Java_OracleHelper源码 有利于学习和研究
OracleHelper.cs文件
oraclehelper.dll 用来操作oracle数据库的各种方法
OracleHelper oracle数据库访问 多种方式 可靠 强大
OracleHelper,已经封装好的方法,可以直接对Oracel数据进行增删查改!
sqlhelper oraclehelper
OracleHelper—数据库操作类,整合所有常用方法,过程
压缩包包含如下内容:Java_OracleHelper_1_0_20071027_src.zip,Java_OracleHelper_1_0_20071027_jar.jar。更多信息可以参见文章:http://blog.csdn.net/FuWaer/archive/2007/10/27/1847475.aspx
C#封装的操作Oracle数据库的帮助类,DbHelperOracle.cs
微软些的C# OracleHelper,有兴趣的参考下
对于asp.net访问oracle数据库,微软已经再支持data.oraclecliet,意见使用odp.net来访问oracle了哦。比data.oraclecliet访问数据库效率更高的odp.net,使用微软的oraclehelper改写得到
C# OracleHelper类, DbHelperOracle.cs.rar
OracleHelper And PetShop OracleHelper And PetShop OracleHelper And PetShop