JAVA中修改SQL报错
发布网友
发布时间:2023-07-09 09:41
我来回答
共3个回答
热心网友
时间:2023-10-03 01:11
应该是先从数据库中查询出余额,然后根据余额判断操作是否正确(取款金额< 余额),符合的话再更新数据库。
第一次应该是select u_money from u_user where u_name='kobe'
第二次才是
update u_user set u_money=(u_money-100) where u_name='kobe'
第一次有ResultSet,第二次没有
哎!不知道你怎么改的。我又不知道你那两个类是干什么的,要知道我就帮你改了
try {
con = java.sql.DriverManager.getConnection(url, user, password);
stmt = con.createStatement();
rs = stmt.executeQuery("select u_money from u_user where u_name='kobe'");
if( rs.next() && rs.getDouble(1) > money) //money应该是输入的
{
stmt.executeUpdate("update u_user set u_money=(u_money-100) where u_name='kobe'");
Qukuan b=new Qukuan();
Qukuanwan a=new Qukuanwan();
b.setVisible(false);
a.setVisible(true);
}
第二个应该是executeUpdate
热心网友
时间:2023-10-03 01:11
你的ResultSet定义为null了,然后并没有将执行结果复制给它。
应该是:
rs=stmt.executeQuery("update u_user set u_money=(u_money-100) where u_name='kobe'");
热心网友
时间:2023-10-03 01:11
1、使用select有返回数据,所以使用rs = stmt.executeQuery("select * from u_user"); 就没问题
2、update没有返回数据,使用rs=stmt.executeQuery("update u_user set u_money=(u_money-100) where u_name='kobe'");肯定报错!
3、在你的程序中,使用的是update,所以不能使用rs,你也确实没有使用。但是,后面while (rs.next()) 你什么意思?rs本来就是null,怎么处理?必然报错!