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语句中是可以成功的 哪位高手能帮忙看看!!!
不清楚setString的第一个参数下标是从0开始还是从1开始的?
没有怎么用过jdbc。你确认一下看看!
这样,用setString肯定有问题。
解决办法,一是使用varchar(N)。
二是,如你所说,拼sql
三是,使用另一个API, ((OraclePreparedStatement)pstmt).setFixedCHAR(1, name);详情见我的短文:
http://hi.baidu.com/hexiong/blog/item/9b716b60404d1d48ebf8f884.html
楼主,试一下"delete from emp where trim(ename)=?"吧
难道不是 ps.setString(1, ename);吗?
是从 1开始啊 你的问题我没碰过..
我在数据库里面它是char
然后在myeclipse对它的定义是 long
试了一下
ps=ct.prepareStatement("select * from goods where trim(goodsId)=?");
ps.setString(1,id);
rs=ps.executeQuery();
问题解决
谢谢啊。
这个问题今天困扰了一个晚上。