java sql null_Java和SQL:返回null或抛出异常?

这是另一个有争议的主题,但这次我只搜索简单而有记录的答案.场景:

我们假设以下方法:

public static Hashtable getSomeDogs(String colName, String colValue) {

Hashtable result = new Hashtable();

StringBuffer sql = null;

Dog dog = null;

ResultSet rs = null;

try {

sql = new StringBuffer();

sql.append("SELECT * FROM ").append("dogs_table");

sql.append(" WHERE ").append(colName).append("='");

sql.append(colValue).append("'");

rs = executeQuery(sql.toString());

while (rs.next()) {

dog= new Dog();

//...initialize the dog from the current resultSet row

result.put(new Long(dog.getId()), dog);

}

}

catch (Exception e) {

createErrorMsg(e);

result = null; //i wonder....

}

finally {

closeResultSet(rs); //this method tests for null rs and other stuff when closing the rs.

}

return result;

}

问题:

1.你有什么方法可以改善这种归还某些狗的技术?

2. rs.next()将为null ResultSet返回false,或者将生成一个异常,如下所示:

String str = null;

的System.out.println(str.toString());

3.如果在从ResultSet的当前行初始化dog对象时发生了一些不好的事情,例如:连接失败,不兼容的值已经传递给dog属性设置器等等,该怎么办?我现在可能在哈希表中有10个元素,或者没有(第一行).下一步操作是什么:a)返回空哈希表; b)返回结果哈希表,它在这个阶段的方式; c)抛出异常:这里的异常类型是什么?

4.我想你们都会同意这一点:没有什么不好的事情发生,审讯中没有行,将返回空值.但是,@ThorbjørnRavnAndersen说here我应该返回一个NullObject而不是null值.我不知道那是什么.

5.我注意到人们和一群人说应该将应用程序分成几层或某种层次.考虑到上面的例子,这里有哪些层,除了我能想到的这些层:

Layer1 :: Database层,执行操作:此方法.

Layer2 :: ??? :构建新Dog对象的一些层:我的Dog对象.

Layer3 ::? :我打算用狗的集合做一些事情的层:主要是GUI层,或用户界面的子层.

在应用程序流程之后,如果在第一层中发生异常,最好的想法是什么呢?我的想法:捕获异常,记录异常,返回一些值.这是最好的做法吗?

Manny感谢您的回答,我期待着看到其他人对这些问题的看法.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值