java - 我的 SQL 查询运行正常,但它似乎没有按应有的方式更新数据库,有人有解决方案吗?

标签 java mysql sql

为了获得更好的上下文,我目前正在制作一个使用 SQL 数据库的应用程序。在此数据库中,一行等于一个用户。每个用户都有一个由四十个插槽组成的库存。每个槽都是数据库中的一列。我想做的是,当单击按钮时,它会运行此查询,该查询应该检查用户库存中的库存槽是否为空(如果等于零则为空)。如果是,它将更新为变量“i”的内容。但如果不是,它将移至下一列并执行相同的过程。但是,当我运行我的应用程序时,它会执行查询,但不会更新数据库,也没有错误。有谁知道为什么吗?另外,我对这个网站还很陌生,所以如果我没有正确地提出这个问题,我会喜欢一些提示或技巧来改善我对其他用户的问题并让自己保持在状态!谢谢!

我的代码:

    try{

        Connection con = DataBaseConnect.getConnection();

        PreparedStatement updateInv = con.prepareStatement("UPDATE userinfo SET "
                + "InvSlot1 = CASE WHEN InvSlot1 = 0 THEN InvSlot1 = "+i+" ELSE InvSlot1 END, "
                + "InvSlot2 = CASE WHEN InvSlot2 = 0 THEN InvSlot2 = "+i+" ELSE InvSlot2 END, "
                + "InvSlot3 = CASE WHEN InvSlot3 = 0 THEN InvSlot3 = "+i+" ELSE InvSlot3 END, "
                + "InvSlot4 = CASE WHEN InvSlot4 = 0 THEN InvSlot4 = "+i+" ELSE InvSlot4 END, "
                + "InvSlot5 = CASE WHEN InvSlot5 = 0 THEN InvSlot5 = "+i+" ELSE InvSlot5 END, "
                + "InvSlot6 = CASE WHEN InvSlot6 = 0 THEN InvSlot6 = "+i+" ELSE InvSlot6 END, "
                + "InvSlot7 = CASE WHEN InvSlot7 = 0 THEN InvSlot7 = "+i+" ELSE InvSlot7 END, "
                + "InvSlot8 = CASE WHEN InvSlot8 = 0 THEN InvSlot8 = "+i+" ELSE InvSlot8 END, "
                + "InvSlot9 = CASE WHEN InvSlot9 = 0 THEN InvSlot9 = "+i+" ELSE InvSlot9 END, "
                + "InvSlot10 = CASE WHEN InvSlot10 = 0 THEN InvSlot10 = "+i+" ELSE InvSlot10 END, "
                + "InvSlot11 = CASE WHEN InvSlot11 = 0 THEN InvSlot11 = "+i+" ELSE InvSlot11 END, "
                + "InvSlot12 = CASE WHEN InvSlot12 = 0 THEN InvSlot12 = "+i+" ELSE InvSlot12 END, "
                + "InvSlot13 = CASE WHEN InvSlot13 = 0 THEN InvSlot13 = "+i+" ELSE InvSlot13 END, "
                + "InvSlot14 = CASE WHEN InvSlot14 = 0 THEN InvSlot14 = "+i+" ELSE InvSlot14 END, "
                + "InvSlot15 = CASE WHEN InvSlot15 = 0 THEN InvSlot15 = "+i+" ELSE InvSlot15 END, "
                + "InvSlot16 = CASE WHEN InvSlot16 = 0 THEN InvSlot16 = "+i+" ELSE InvSlot16 END, "
                + "InvSlot17 = CASE WHEN InvSlot17 = 0 THEN InvSlot17 = "+i+" ELSE InvSlot17 END, "
                + "InvSlot18 = CASE WHEN InvSlot18 = 0 THEN InvSlot18 = "+i+" ELSE InvSlot18 END, "
                + "InvSlot19 = CASE WHEN InvSlot19 = 0 THEN InvSlot19 = "+i+" ELSE InvSlot19 END, "
                + "InvSlot20 = CASE WHEN InvSlot20 = 0 THEN InvSlot20 = "+i+" ELSE InvSlot20 END, "
                + "InvSlot21 = CASE WHEN InvSlot21 = 0 THEN InvSlot21 = "+i+" ELSE InvSlot21 END, "
                + "InvSlot22 = CASE WHEN InvSlot22 = 0 THEN InvSlot22 = "+i+" ELSE InvSlot22 END, "
                + "InvSlot23 = CASE WHEN InvSlot23 = 0 THEN InvSlot23 = "+i+" ELSE InvSlot23 END, "
                + "InvSlot24 = CASE WHEN InvSlot24 = 0 THEN InvSlot24 = "+i+" ELSE InvSlot24 END, "
                + "InvSlot25 = CASE WHEN InvSlot25 = 0 THEN InvSlot25 = "+i+" ELSE InvSlot25 END, "
                + "InvSlot26 = CASE WHEN InvSlot26 = 0 THEN InvSlot26 = "+i+" ELSE InvSlot26 END, "
                + "InvSlot27 = CASE WHEN InvSlot27 = 0 THEN InvSlot27 = "+i+" ELSE InvSlot27 END, "
                + "InvSlot28 = CASE WHEN InvSlot28 = 0 THEN InvSlot28 = "+i+" ELSE InvSlot28 END, "
                + "InvSlot29 = CASE WHEN InvSlot29 = 0 THEN InvSlot29 = "+i+" ELSE InvSlot29 END, "
                + "InvSlot30 = CASE WHEN InvSlot30 = 0 THEN InvSlot30 = "+i+" ELSE InvSlot30 END, "
                + "InvSlot31 = CASE WHEN InvSlot31 = 0 THEN InvSlot31 = "+i+" ELSE InvSlot31 END, "
                + "InvSlot32 = CASE WHEN InvSlot32 = 0 THEN InvSlot32 = "+i+" ELSE InvSlot31 END, " 
                + "InvSlot33 = CASE WHEN InvSlot33 = 0 THEN InvSlot33 = "+i+" ELSE InvSlot33 END, "
                + "InvSlot34 = CASE WHEN InvSlot34 = 0 THEN InvSlot34 = "+i+" ELSE InvSlot34 END, "
                + "InvSlot35 = CASE WHEN InvSlot35 = 0 THEN InvSlot35 = "+i+" ELSE InvSlot35 END, "
                + "InvSlot36 = CASE WHEN InvSlot36 = 0 THEN InvSlot36 = "+i+" ELSE InvSlot36 END, "
                + "InvSlot37 = CASE WHEN InvSlot37 = 0 THEN InvSlot37 = "+i+" ELSE InvSlot37 END, "
                + "InvSlot38 = CASE WHEN InvSlot38 = 0 THEN InvSlot38 = "+i+" ELSE InvSlot38 END, "
                + "InvSlot39 = CASE WHEN InvSlot39 = 0 THEN InvSlot39 = "+i+" ELSE InvSlot39 END, "
                + "InvSlot40 = CASE WHEN InvSlot40 = 0 THEN InvSlot40 = "+i+" ELSE InvSlot40 END "
                + "WHERE Username = '"+LoginController.userLog+"'");
        updateInv.executeUpdate();
        System.out.println("Complete");
        }
    catch(Exception e){
        e.printStackTrace();
        }
}

最佳答案

首先,您可以将查询放入变量中并打印出该变量。那么错误就很明显了:

UPDATE userinfoSET . . .

正如所写,您需要空格。

其次,您应该使用参数将值传递到查询中。

关于java - 我的 SQL 查询运行正常,但它似乎没有按应有的方式更新数据库,有人有解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42604160/

相关文章:

MYSQL 查询从子 ID 获取完整的父历史

sql - 我怎样才能只得到一个数字的第一位小数而不四舍五入

php - 使用 php mysql 从数据库中获取图像

sql - 如何根据名字、姓氏和城市创建电子邮件列表?

mysql - 没有记录的查询对于 SUM 函数返回 null

java - Spring Cloud config - jce jar 文件的自定义位置

java - 确保数据库中每个用户、每个页面的单次投票

java - 我应该在 java 或 php 中转换字符串 sha1 吗?

java - JSONObject 类出现问题,未给出错误

php - 在 Laravel 中从数据库创建实体类