javasql更新语句

xienkqul  于 2021-06-25  发布在  Mysql
关注(0)|答案(4)|浏览(430)

从java更新表时遇到问题。
我需要检查colmunid(来自我的表products)=int id(由用户输入给定),并将表中的产品价格更改为用户给定的价格。
问题:

static void x(int Userid, int Userprice) {
 ..........................................
   String sql = "UPDATE  Product set Price = Userprice where ID=Userid; ";
....}

我得到一个错误,我的数据库中没有userprice或userid列。我不知道如何写这个来检查int user id,它在这个方法中是作为参数给出的,而不是数据库表中不存在的列。

vsmadaxz

vsmadaxz1#

如果数据库中不存在userid表,则无法在sql查询中使用该表。你有两个选择:1。将userid和userprice作为变量传递给sql查询

String sql = "UPDATE  Product set Price = " + Userprice + "where ID=" + Userid+ "; "

或2。在数据库中创建表并连接该表

String sql = "Update A Set A.Price = b.Userprice FROM Product as A INNER JOIN User as b on A.Userid = b.ID;"
tkqqtvp1

tkqqtvp12#

PreparedStatement ps = null;
Connection con = null;
try {
con = getConnection();
String sql = "UPDATE  Product set Price = ? where ID= ? ";          
            ps = con.prepareStatement(sql);         
            ps.setString(1, Userprice); 
            ps.setString(2, Userid); 
            int i = ps.executeUpdate();
            if (i > 0) { 
                System.out.println("Product Updated"); 
            } else {
                System.out.println("Error Occured");
            }

我想这是你要找的东西。。。查询不应包含“;”在代码的字符串中

huus2vyu

huus2vyu3#

假设两列都有 Integer 数据库中的数据类型,

String sql = "UPDATE  Product set Price="+Userprice+" where ID="+Userid;

您没有将实际值传递给它和额外的“;”不需要。另外,我建议你更喜欢事先准备好的陈述,而不是上述方法

xzv2uavs

xzv2uavs4#

虽然您在生产代码中肯定希望使用准备好的语句来防止sql注入,但下面是一个简单的解决方法。

String sql = String.format("UPDATE  Product set Price = %d where ID=%d ",Userprice,Userid);

字符串本身不会计算变量。

相关问题