作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为我的 Oracle JDBC 准备语句遗漏了一些明显的内容。我正在尝试创建一个从 TABLE
中选择列 A
的 PreparedStatement
,其中 B
是参数。例如,这也是我总结的测试代码:
Class.forName("oracle.jdbc.driver.OracleDriver");
final Connection connection = DriverManager.getConnection(<Oralce JDBC connection stuff>);
final PreparedStatement findStatement = connection.prepareStatement("SELECT A FROM TABLE WHERE B = ?");
findStatement.setString(1, "TEST");
final ResultSet results = findStatement.executeQuery();
results.next();
System.out.println(results.getString("A"));
现在这不起作用,我目前得到 java.sql.SQLException: Result set after last row
因为 ResultSet
为空。
但是,这有效:
Class.forName("oracle.jdbc.driver.OracleDriver");
final Connection connection = DriverManager.getConnection(<Oralce JDBC connection stuff>);
final PreparedStatement findStatement = connection.prepareStatement("SELECT A FROM TABLE WHERE B = 'TEST'");
final ResultSet results = findStatement.executeQuery();
results.next();
System.out.println(results.getString("A"));
请注意我如何使用字符串对 WHERE
语句进行硬编码。
我遗漏了什么明显的东西吗?
我的 Maven 依赖项定义为:
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
</dependency>
列 B
定义为 CHAR(50)
这是来自 Oracle 的一些调试信息
select
s.sql_text,
bc.position,
bc.value_string
from v$sql s
left join v$sql_bind_capture bc
on bc.sql_id = s.sql_id
and bc.child_number = s.child_number
where
s.sql_text like 'SELECT A%'
order by s.sql_id, bc.position;
带输出
SQL_TEXT | Position | Value_String
SELECT A FROM TABLE WHERE B = :1 | 1 | TEST
SELECT A FROM TABLE WHERE B = 'TEST' | <null> | <null>
最佳答案
除了@LppEdd答案之外,您还可以执行此操作来设置参数:
((OraclePreparedStatement)findStatement).setFixedCHAR(1, "TEST");
关于java - 如何为 Oracle CHAR 字段设置 JDBCPreparedStatement 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42950355/
我是一名优秀的程序员,十分优秀!