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

qq404196788 2011-11-22 04:34:46
方法执行后返回一个整形,我接收到之后输出为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();

}
}
...全文
467 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq404196788 2011-11-23
  • 打赏
  • 举报
回复
我勒个去,昨天怎么试都不行,今天一来,就行了,真蛋疼,问题处在哪儿都不知道
scrack 2011-11-23
  • 打赏
  • 举报
回复
单元测试下吧 或者专门把这个方法拿出来测试 有可能是事务 或者在别的方法调用失败 回滚
qq404196788 2011-11-23
  • 打赏
  • 举报
回复
我全部的Dao都是这么写的,其他都可以提交的,但是就这个不行,这与事务有关吗?
ucasliming 2011-11-22
  • 打赏
  • 举报
回复
事务提交一下再试试吧。
  • 打赏
  • 举报
回复
可能是你那个getDBConnection(),每次获取都不是同一个Connection。
你试试看这样做:
Connection con = getDBConnection();
在这里执行insert操作。
con.close();
不要用你的getDBConnection().closePreparedStatement(pstmt)和getDBConnection().closeConnection();用con对象关闭。
LucEaspe 2011-11-22
  • 打赏
  • 举报
回复
事务回滚了。。。事务提交下
dingherry 2011-11-22
  • 打赏
  • 举报
回复
插入数据后,事务没有commit,数据回滚了,当然没有数据
qq404196788 2011-11-22
  • 打赏
  • 举报
回复
调试之后不报错,数据也是正确的,第一次遇见这问题
steely_chen 2011-11-22
  • 打赏
  • 举报
回复
建议耐心调试,特别是查看数据那一块。不要使用第三方工具查看,尽量使用指令查看数据。
qq404196788 2011-11-22
  • 打赏
  • 举报
回复
执行之后不报错,i的值为1.1001是checkinno的值,Fieldsurveypk的值是在前面直接传过来的
e88ad68e-f776-473d-94f0-0e769837f0e6
-------------------1001
--------------------------------------------1

但数据库中的数据没变化,表名是没错的
这个实在是令人费解

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧