Java preparestatement 报错 java.sql.SQLException: ORA-01008: 并非所有变量都已绑定

代码如下publicstaticvoidchangMoney(intid){System.out.println("请输入对方ID");intid2=id;intid1=... 代码如下
public static void changMoney(int id) {
System.out.println("请输入对方ID");
int id2 = id;
int id1 = input.nextInt();
System.out.println("请输入转账金额:");
double money = input.nextDouble();
try {
ps.execute("UPDATE CUSTOMER SET MONEY = MONEY-? WHERE ID = ?");
ps.setDouble(1, money);
ps.setInt(2, id2);
ps.execute("UPDATE CUSTOMER SET MONEY = MONEY+" + money + "WHERE ID = " + id1);
System.out.println("转账成功!");
menu.customer(id);
} catch (SQLException e) {
e.printStackTrace();
}
}
报错 java.sql.SQLException: ORA-01008: 并非所有变量都已绑定

求高手给出解释
展开
 我来答
wjm0506
推荐于2017-04-22 · TA获得超过147个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:172万
展开全部
//PreparedStatement 不是你这样用的改成这样
PreparedStatement ps= con.prepareStatement("UPDATE CUSTOMER SET MONEY = MONEY-? WHERE ID = ?");
ps.setDouble(1, money);
ps.setInt(2, id2);
ps.executeUpdate();

像你这样ps.execute("UPDATE CUSTOMER SET MONEY = MONEY-? WHERE ID = ?");这个sql就直接执行了。所有?的值还没绑定,后面的ps.set其实已经没用了已经执行了明白了吧。

有问题请追问。

babyt0ny
2014-09-17 · TA获得超过235个赞
知道答主
回答量:30
采纳率:0%
帮助的人:14.7万
展开全部
在执行sql之前,打印一下你的3个变量 money id2 id1 是不是真的有值。为null的话就会报错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
verge3
2014-09-17 · 超过32用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:80.4万
展开全部
你的sql 语句有错MONEY-? MONEY+" + money
sql 没有这么写的吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式