奇葩!PreparedStatement.executeUpdate执行之后的问题

帮助别人就是帮助自己! 如果这里解决了您的问题,请您点一下推荐

奇葩!PreparedStatement.executeUpdate执行之后的问题

 方法执行后返回一个整形,我接收到之后输出为1,证明已经有一行数据受影响,但是数据库里仍然没有数据。代码如下:
public void insert(Object obj) throws DBException {
PreparedStatement pstmt = null;
try {

FieldSurveyBean bean = (FieldSurveyBean) obj;
String areno = bean.getAreno();
String statement = "";
statement += "INSERT INTO [dbo].TB_FieldSurvey";
statement += "([FieldSurveyPK]";
statement += ",[Creator]";
statement += ",[Create_Time]";
statement += ",[Update_Time]";
statement += ",[ProjectTypeNo]";
statement += ",[CheckInNo]";
statement += ",[ProspectNo]";
statement += ",[Proc_id]";
statement += ",[Step_id]";
statement += ",[UnitOfUsers]";
statement += ",[Address]";
statement += ",[ProspectContent]";
statement += ",[AreNo]";
statement += ",[Linkman]";
statement += ",[Tel]";
statement += ",[ApplyAccount]";
statement += ",[DeliveryInfo]";
statement += ",[Installation]";
statement += ",[SurveyDate1]";
statement += ",[SurveyDate2]";
statement += ",[SurveyDate3]";
statement += ",[Prospector] ";
statement += ",[Map]";
statement += ",[MapSummary]";
statement += ",[DesignIdeas]";
statement += ",[ProspectorIdeas]";
statement += ",[DesignForIdeas]";
statement += ",[ApprovalIdeas]";
statement += ",[projectpk])";
statement += " VALUES(?,?,getdate(),getdate(),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
pstmt = getDBConnection().createPreparedStatement(statement);

System.out.println(statement);
System.out.println(bean.getFieldsurveypk());
System.out.println("-------------------"+bean.getCheckinno());
pstmt.setString(1, bean.getFieldsurveypk());
pstmt.setString(2, bean.getCreator());
pstmt.setString(3, bean.getProjecttypeno());
pstmt.setString(4, bean.getCheckinno());

pstmt.setString(5, bean.getProspectno());
pstmt.setString(6, bean.getProc_id());
pstmt.setString(7, bean.getStep_id());
pstmt.setString(8, bean.getUnitofusers());
pstmt.setString(9, bean.getAddress());
pstmt.setString(10, bean.getProspectcontent());
pstmt.setString(11, bean.getAreno());
pstmt.setString(12, bean.getLinkman());
pstmt.setString(13, bean.getTel());
pstmt.setInt(14, bean.getApplyaccount());
pstmt.setString(15, bean.getDeliveryinfo());
pstmt.setString(16, bean.getInstallation());
pstmt.setString(17, bean.getSurveydate1());
pstmt.setString(18, bean.getSurveydate2());
pstmt.setString(19, bean.getSurveydate3());
pstmt.setString(20, bean.getProspector());
pstmt.setString(21, bean.getMap());
pstmt.setString(22, bean.getMapsummary());
pstmt.setString(23, bean.getDesignideas());
pstmt.setString(24, bean.getProspectorideas());
pstmt.setString(25, bean.getDesignforideas());
pstmt.setString(26, bean.getApprovalideas());
pstmt.setString(27, bean.getProjectpk());
int i=pstmt.executeUpdate();
System.out.println("--------------------------------------------"+i);

} catch (SQLException e) {
throw new DBException(e);

} finally {
getDBConnection().closePreparedStatement(pstmt);
getDBConnection().closeConnection();

}
}
Java EE  258 次浏览  2011-11-23 00:34

10 个回答

执行之后不报错,i的值为1.1001是checkinno的值,Fieldsurveypk的值是在前面直接传过来的
e88ad68e-f776-473d-94f0-0e769837f0e6
-------------------1001
--------------------------------------------1

但数据库中的数据没变化,表名是没错的
这个实在是令人费解
2011-11-23 00:41  推荐: 0 次 
建议耐心调试,特别是查看数据那一块。不要使用第三方工具查看,尽量使用指令查看数据。
2011-11-23 00:55  推荐: 0 次 
调试之后不报错,数据也是正确的,第一次遇见这问题
2011-11-23 01:04  推荐: 0 次 
插入数据后,事务没有commit,数据回滚了,当然没有数据
2011-11-23 02:13  推荐: 0 次 
事务回滚了。。。事务提交下
2011-11-23 02:27  推荐: 0 次 
可能是你那个getDBConnection(),每次获取都不是同一个Connection。
你试试看这样做:
Connection con = getDBConnection();
在这里执行insert操作。
con.close();
不要用你的getDBConnection().closePreparedStatement(pstmt)和getDBConnection().closeConnection();用con对象关闭。
2011-11-23 03:13  推荐: 0 次 
事务提交一下再试试吧。
2011-11-23 03:33  推荐: 0 次 
我全部的Dao都是这么写的,其他都可以提交的,但是就这个不行,这与事务有关吗?
2011-11-23 17:07  推荐: 0 次 
单元测试下吧 或者专门把这个方法拿出来测试 有可能是事务 或者在别的方法调用失败 回滚
2011-11-23 17:20  推荐: 0 次 
我勒个去,昨天怎么试都不行,今天一来,就行了,真蛋疼,问题处在哪儿都不知道
2011-11-23 18:11  推荐: 0 次 
  • 0
    点赞
  • 0
    收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值