日期:2014-05-16  浏览次数:21448 次

求助: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