字符变化列上的Postgresql更新清空了它

时间:2016-04-28 16:16:15

标签: java windows postgresql jdbc

我正在使用PostgreSQL jdbc驱动程序来更新表。它包含多个列,其中一列表示记录数据文件的路径,名为Path,类型为character varying。只要路径发生变化,就可以通过调用记录类中的updatePath()来更新记录。

发生的事情是通常失败并用空字符串替换Path值。但是有时它有效。当然,如果我在pgAdmin上尝试查询它运行良好... 使用路径创建记录总是可以正常工作,并且更新整个记录(即所有列)会正确更新所有列(包括其他字符变化列)除了 Path列!

这是我的update()方法:

public static final String IDCOL = "_ID_"; // Primary key, auto-increment
public static final String tableName = "MyTable"; // Table name

private int id; // The record ID
...
private String path; // Path to the record

public boolean updatePath(Connection cnx) {
    String sql = "UPDATE \""+tableName+"\" SET \"Path\"=? WHERE \""+IDCOL+"\"="+id;
    try (PreparedStatement ps = cnx.prepareStatement(sql)) {
        ps.setString(1, path);
        log.debug("<sql>"+ps+"</sql>");
        ps.executeUpdate();
        return true;
    } catch (SQLException e) {
        log.error("Unable to update path: "+e.getMessage());
        return false;
    }
}

我的调试日志显示:

UPDATE "MyTable" SET "Path"='\\192.168.1.10\Store\2016 04\data73849.dat' WHERE "_ID_"=73849

可能是Postgres以某种方式(错误)解释路径中的\字符吗?

0 个答案:

没有答案