오라클은 char 열의 값을 채 웁니다. 따라서 CHAR (2) 열에 "a"를 삽입하면 해당 열을 "a"와 비교하여 해당 레코드를 가져올 수 없으므로 "a"와 비교하여 가져와야합니다. 권리?Oracle jdbc driver fixedString 속성을 사용하는 방법은 무엇입니까?
이 문제를 해결하기 위해 Oracle jdbc 드라이버에는 fixedString 속성이 있지만 작동하지 못합니다. fixedStringhere
나는 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();
}
위의 코드는 잘 실행 (예외가 발생하지)하지만 결과 집합하는 executeQuery 후 비어있는(). 내가
ps.setObject(1, "abc ");
에 대한 선 (*)를 변경하는 경우
그럼 난 내가 원하는 열을 얻는다. 그래서 그것은 드라이버가 fixedString 옵션을 무시하는 것 같습니다.
는 또한ps.setObject(1, "abc", java.sql.Types.CHAR);
의 라인 (*)를 변경 시도했습니다하지만 얻을의 ResultSet 다시 비어 있습니다. 내가 무엇이 누락 되었습니까? 사전에
덕분에
이 속성은 setObject (...)에서만 작동합니다. 이 속성은 setString (...)을 호출 할 때 아무런 영향을주지 않습니다. – netjeff