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: 并非所有变量都已绑定
求高手给出解释 展开
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: 并非所有变量都已绑定
求高手给出解释 展开
展开全部
//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其实已经没用了已经执行了明白了吧。
有问题请追问。
展开全部
在执行sql之前,打印一下你的3个变量 money id2 id1 是不是真的有值。为null的话就会报错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的sql 语句有错MONEY-? MONEY+" + money
sql 没有这么写的吧
sql 没有这么写的吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询