插入数据的问题

hyowner 2010-05-01 11:19:37
向表里插入记录,
public void insertMessageInfo(Assets m) {
String sql = "insert into XAS_Assets (FUser,FNumber,FName,Famount,FAssetsAcctType,FAssetsType,FAssetsState,FLocation,FDepartment,FMemo,FClear,FCpu)values(?,?,?,?,?,?,?,?,?,?,?,?)";
DBBean db = new DBBean();
System.out.print("insertsql="+sql);
PreparedStatement pstmt = null;
try {
db.connect();
pstmt = db.con.prepareStatement(sql);
pstmt.setString(1, m.getFNumber());
pstmt.setString(2,m.getFUser());

pstmt.setString(3, m.getFName());
pstmt.setInt(4,m.getFAmount());
pstmt.setString(5, m.getFAssetsAcctType());
pstmt.setString(6, m.getFAssetsType());
pstmt.setString(7, m.getFAssetsState());
pstmt.setString(8, m.getFDepartment());
pstmt.setString(9, m.getFLocation());

pstmt.setString(10, m.getFMemo());
pstmt.setInt(11, m.getFClear());
pstmt.setString(12, m.getFCpu());

pstmt.executeUpdate();


} catch (Exception e) {
System.out.println(e);

} finally {
db.close();
}
}
执行后为什么插入不了 也不报错呢??找高人帮解答下
...全文
109 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zq5337 2010-05-01
  • 打赏
  • 举报
回复
加上log4j看看 肯定有错
believefym 2010-05-01
  • 打赏
  • 举报
回复
请用代码格式帮助别人阅读代码
hyowner 2010-05-01
  • 打赏
  • 举报
回复
楼上说的是什么意思啊
cml244 2010-05-01
  • 打赏
  • 举报
回复
用PreparedStatement的话,insert into table values(?,?,?....)
aaxuelian 2010-05-01
  • 打赏
  • 举报
回复
学习了...
tpshowcom 2010-05-01
  • 打赏
  • 举报
回复
纠正一下5,6楼的观点
在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。如果是为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不调用commit()方法,SQL语句不会得到事务确认。在最近一次commit()方法调用之后的所有SQL会在方法commit()调用时得到确认。
tpshowcom 2010-05-01
  • 打赏
  • 举报
回复
db.con.commit();//提交JDBC事务
db.con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式

后面那两句少写了...
tpshowcom 2010-05-01
  • 打赏
  • 举报
回复

public void insertMessageInfo(Assets m) {
String sql = "insert into XAS_Assets (FUser,FNumber,FName,Famount,FAssetsAcctType,FAssetsType,FAssetsState,FLocation,FDepartment,FMemo,FClear,FCpu)values(?,?,?,?,?,?,?,?,?,?,?,?)";
DBBean db = new DBBean();
System.out.print("insertsql="+sql);
PreparedStatement pstmt = null;
try {
db.connect();
db.con.setAutoCommit(false);//----更改JDBC事务的默认提交方式
pstmt = db.con.prepareStatement(sql);
pstmt.setString(1, m.getFNumber());
pstmt.setString(2,m.getFUser());

pstmt.setString(3, m.getFName());
pstmt.setInt(4,m.getFAmount());
pstmt.setString(5, m.getFAssetsAcctType());
pstmt.setString(6, m.getFAssetsType());
pstmt.setString(7, m.getFAssetsState());
pstmt.setString(8, m.getFDepartment());
pstmt.setString(9, m.getFLocation());

pstmt.setString(10, m.getFMemo());
pstmt.setInt(11, m.getFClear());
pstmt.setString(12, m.getFCpu());

pstmt.executeUpdate();

con.commit();//提交JDBC事务
con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式
} catch (Exception e) {
System.out.println(e);

} finally {
db.close();
}
}


应该是没有提交事物,加上注释的那几句试试。
你最好发一下你封装的那个类的代码,有可能是你在封装的类里修改了JDBC事物的默认提交方式,默认应该是自动提交事物的。
QQsee 2010-05-01
  • 打赏
  • 举报
回复
你的那个插入事务呢?
backbeer12345 2010-05-01
  • 打赏
  • 举报
回复
你根本就没有提交。安照逻辑来讲你应该有个事务提交。但是你没有。还是你封装了这部分?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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