在用jdbc写dao时,插入数据库一条记录,然后返回这条记录的Java对象,怎么写最好?请各位高手指教,在线等。。。
本帖最后由 fengfenglucky 于 2012-11-14 10:27:32 编辑 我从其他类的对象得到的数据,在dao中使用jdbc插入另外一张表,插入以后,需要返回这个刚插入的表所对应的对象,需要怎么写比较好呢?在线等,各位老师指点迷津。。。。
大概代码如下:
private SmsRecordImpl __adSmsRecord(VoicebeanImpl voicebean) {
Connection conn = ConnectionDB.getInstance().getConn();
String sql = "insert into Iptfa_alarm_hnvoice_sms(Sms_id,Alarm_orgfp,Alarm_sid) values(seq_Iptfa_alarm_hnvoice_sms.nextval,?,?)";
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,voicebean .getAlarm_orgfp());
ps.setString(2,voicebean .getAlarm_sid());
boolean b = ps.execute();
//接下来不知道怎么写返回SmsRecordImpl的对象比较好了,请各位老师指点,谢谢了!!!
// if(b==true ){
// ResultSet rs = ps.getResultSet();
// SmsRecordImpl sri = new SmsRecordImpl();
// sri.setSms_id(rs.getInt(1));
// }
} catch (SQLException e) {
e.printStackTrace(); }
return null;
}
[解决办法]
可以以在finally里面执行查询,你怎么插入的,你就怎么查询(voicebean .getAlarm_orgfp()和voicebean .getAlarm_sid()两个值就作为查询的条件),新建一个你要的对象,然后把根据查询结果把值一个个set进去,查询完了就关闭连接
[解决办法]
CallableStatement cst = con.prepareCall("begin insert into table(col1,col2) values(?,?) returning col1,col2 into ?,?; end;");
cst.setInt(1, 111);
cst.setString(2, "ccc");
cst.registerOutParameter(1, 4);
cst.registerOutParameter(2, 12);
cst.execute();
System.out.println(cst.getInt(1));
System.out.println(cst.getString(2));
cst.close();