gpt4 book ai didi

java - 如何使用Oracle jdbc驱动的fixedString属性?

转载 作者:搜寻专家 更新时间:2023-11-01 02:56:22 28 4
gpt4 key购买 nike

Oracle 在 char 列中填充值,因此如果我在 CHAR(2) 列中插入“a”,那么我无法通过将该列与“a”进行比较来获取该记录,我应该通过将其与“a”进行比较来获取它。对吧?

为了解决这个问题,Oracle jdbc 驱动程序具有 fixedString 属性,但我无法使其工作。 (寻找 fixedString here )

我正在使用适用于 Oracle 10gR2 的 ojdbc14.jar 驱动程序并访问 Oracle 10gR2 数据库。

这是我的代码:

    try {
Properties props = new Properties();
props.put("user", "****");
props.put("password", "****");
props.put("fixedString", true);

Class.forName("oracle.jdbc.driver.OracleDriver");

String jdbcUrl = "jdbc:oracle:thin:@<host>:<port>:<sid>";

Connection connection = DriverManager.getConnection(jdbcUrl, props);

PreparedStatement ps = connection.prepareStatement(
"SELECT * FROM MY_TABLE WHERE MY_TABLE_ID = ?");
ps.setObject(1, "abc"); // (*)
// MY_TABLE_ID is CHAR(15)

ResultSet rs = ps.executeQuery();
while (rs.next())
{
System.out.print("data: ");
System.out.println(rs.getString("MY_TABLE_ID"));
}
rs.close();
ps.close();
connection.close();
} catch (SQLException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}

上面的代码执行得很好(没有抛出异常)但是 ResultSet 在 executeQuery() 之后是空的。

如果我将 (*) 行更改为

ps.setObject(1, "abc            ");

然后我得到我想要的列。所以驱动程序似乎忽略了 fixedString 选项。

我也试过更改 (*) 行

ps.setObject(1, "abc", java.sql.Types.CHAR);

但是我得到的结果集又是空的。 我错过了什么?

提前致谢

最佳答案

尝试将其用作

props.put("fixedString", "true");

Oracle 文档说 fixedString 为 String(包含 boolean 值)

关于java - 如何使用Oracle jdbc驱动的fixedString属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/687018/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com