代码如下
PreparedStatement preState = conn.prepareStatement( "ALTER USER \"?\" IDENTIFIED BY \"?\" REPLACE \"?\"");
preState.setString(1, this.userId);
preState.setString(2, newPassword);
preState.setString(3, this.password);
logger.debug("User" + this.userId + " NewPassword"+newPassword+" OldPassword:"+ this.password+"\nSQL:"+sql);
preState.execute();
preState.close();
preState = null;
运行时总是提示:
Unable to change password, exception occurs java.sql.SQLException: ORA-01918: user ':1' does not exist
------解决方案--------------------
一把我们用PreparedStatement 都用的executeUpdate()或executeQuery执行啊。。
你这里是ALTER更改,那应该是executeUpdate()才对啊。。。
preState.execute()这种情况是在用Statement查询的时候执行用的, ,,你好像执行方法没有用对。。。。
你看看。。你用查询的方法去执行ALTER更改的操作。。。所以会报错。。。。参数有问题。。。因为驱动程序执行时,按照查询的语法来执行的。。。
------解决方案--------------------
ALTER 是修改表结构
UPDATE 是修改表里的数据
完全2个意思~~
------解决方案--------------------
insert into biao values(?,?,?,?)
update biao set a=?, b=?
select /delete from biao where a=? and b like ? and c>?
只有这些?的地方可以用绑定变量
只要是ddl就不可能用绑定变量了,直接拼接SQL
------解决方案--------------------