当前位置: 首页 > 知识库问答 >
问题:

UPDATE PreparedStatement未使用JDBC更新MSSQL

鞠嘉志
2023-03-14

我试图使用JDBC更新一个MSSQL实例,使用一个预先准备好的语句,在给定列名、要更新的值和更新的值时,我创建了一个方法来更新表中的任何记录。

public void updateProjectOptions(int projectID, int number, String column){
    try {
        PreparedStatement ps = conn.prepareStatement("UPDATE cryptic.dbo.projects SET ? = ? WHERE project_id = ?");
        int newNum = number+1;
        System.out.println(projectID+" "+newNum+" "+column);
        ps.setString(1, column);
        ps.setInt(2, newNum);
        ps.setInt(3, projectID);
        int debug = ps.executeUpdate();
        System.out.println("Rows affected: "+debug);
    } catch (SQLException ex) {
        Logger.getLogger(DAL.class.getName()).log(Level.SEVERE, null, ex);
    }
}

第一个print语句打印出正确的值,这样我就知道输入是正确的,第二个print语句让我知道1行受影响,这是正确的。

如果我在Management Studio中运行脚本,脚本会运行良好并更新表,但如果我从java项目中运行脚本,则不会更新任何内容,也不会生成任何错误。

讨论中的db表有4列:(int)project_id,(nvarchar)project_name,(int)num_bugs,(int)num_features

有谁能帮我把这件事做好,或者找出问题所在吗?

共有2个答案

壤驷华美
2023-03-14

列名不能在准备好的语句中参数化。只能参数化字符串或数字等文字值。

狄飞鹏
2023-03-14

不能用这种方式绑定列名,只能绑定变量。

我建议您关闭finally块中方法范围内的PreparedStatement。你的方式就是自找麻烦。

我还将调用写入系统。这是个非常糟糕的主意。我更愿意将受影响的行数返回给用户。

 类似资料:
  • 我试图插入和更新MySql上使用SparkSQLDataFrames和JDBC连接的一些数据。 我已经成功地使用SaveMode插入新数据。追加。有没有办法从SparkSQL更新MySql Table中已经存在的数据? 我要插入的代码是: 如果我切换到保存模式。覆盖它会删除完整的表并创建一个新表,我正在寻找MySql中提供的类似“ON DUPLICATE KEY UPDATE”的内容

  • 我有一个Spring应用程序,其中Domain Object标识符不是由数据库分配的,而是由应用程序生成的。标识符是在BeforeSave回调期间生成并添加到Domain Object中的。保存域对象(插入)后,当尝试保存具有相同标识符的域对象(更新)时,我收到以下错误 原因:组织。springframework。道。Incorrectupdatesemanticdataaccessexcepti

  • 我是使用gradle构建的新手。目前,我尝试实现项目B的构建,该构建使用项目a的构建结果,该结果部署到artifactory。我使用的是Gradle 2.2。详细信息: 项目A的build.gradle包含: 每次构建项目a时,应用插件“maven”会在artifatory中生成一个新的工件,如at.mic.projectA-1.0.0-20150624.073846-2.jar(和.pom)。

  • 主要内容:所需步骤,示例代码在本教程将演示如何在JDBC应用程序中,更新数据库的一个表中数据记录。 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式的数据库表中更新数据记录。 要执行以下示例,需要用实际用户名和密码替换这里用户名()和密码()。 MySQL或数据库已启动并运行。 所需步骤 使用JDBC应用程序向表中更新数据记录需要以下步骤: 导入包:需要包含包含数据库编程所需的JDBC类的

  • 我需要关于spring集成jdbc出站网关的帮助。我目前正在使用spring集成示例jdbc。我添加代码来使用jdbc出站网关更新数据,下面是spring集成上下文。xml: 这是我的个人服务。爪哇: Main.java: 为什么我总是得到这个错误消息,每当我试图运行它? 那个人。java POJO: 请帮帮我,我不知道是哪种java。对象,因为我在代码中的任何地方都不使用它。谢谢

  • 我有一个primefaces,点击按钮就会弹出。当我更改订单列表中项目的顺序,并单击弹出窗口上的“保存订单”按钮时,我没有看到带有更改顺序的列表。我的密码- 在豆子里: 请告诉我代码可能有什么问题。