求助:ps.setString()无效
public void delEmp(String ename) throws SQLException, ClassNotFoundException {
String name = "test4";
String sql = "delete from emp where ename=?";
Db db = new Db();
Connection con = db.getCon();
PreparedStatement ps = null;
ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.executeUpdate();
con.commit();
if(ps != null){
ps.close();
ps = null;
con.close();
con = null;
}
}
复制代码我的目的是使用rs.setString(1,name)用name替换上面sql语句中的占位符,但是试了语句执行完了,但是数据库中的内容还在。
反复的试,最后试出如果直接把test4写入sql语句中是可以成功的
哪位高手能帮忙看看!!!
------解决方案--------------------
你的表结构中ename是char(N)型的吧。
这样,用setString肯定有问题。
解决办法,一是使用varchar(N)。
二是,如你所说,拼sql
三是,使用另一个API, ((OraclePreparedStatement)pstmt).setFixedCHAR(1, name);
详情见我的短文:
http://hi.baidu.com/hexiong/blog/item/9b716b60404d1d48ebf8f884.html