Java 通过prepared语句设置原始数据类型
我在表中有一列,列名是INSTANCE\u GUID,它的原始数据类型 我正在编写一个准备好的语句select query to并设置实例\u GUIDJava 通过prepared语句设置原始数据类型,java,database,oracle,jdbc,Java,Database,Oracle,Jdbc,我在表中有一列,列名是INSTANCE\u GUID,它的原始数据类型 我正在编写一个准备好的语句select query to并设置实例\u GUID pstatement.setString(instanceGuid); 但是这是设置原始数据类型的正确方法吗?请告诉我如何设置我应该使用的原始数据类型 感谢如中所述,当使用RAW列时,您可以将其视为BINARY或VARBINARYJDBC类型,这意味着您可以使用JDBC标准方法getBytes()和setBytes()返回或接受byte[]s
pstatement.setString(instanceGuid);
但是这是设置原始数据类型的正确方法吗?请告诉我如何设置我应该使用的原始数据类型
感谢如中所述,当使用RAW
列时,您可以将其视为BINARY
或VARBINARY
JDBC类型,这意味着您可以使用JDBC标准方法getBytes()
和setBytes()
返回或接受byte[]
setBytes()
将接受长数组(>4000字节)
其他选项是使用Oracle驱动程序特定扩展名getRAW()
(Oracle.jdbc.OracleResultSet
)和setRAW()
(Oracle.jdbc.OraclePreparedStatement
)返回或接受。使用这两个类需要您展开和/或强制转换到特定的Oracle实现类
要创建一个,只需调用
new oracle.sql.RAW(byte[])
下次,请确保包含此类信息。RAW
已被弃用,您应该使用BLOB
。哪个接口定义了setRAW()
?@aarondigula它是由oracle.jdbc.oraclepresparedstatement
定义的(和oracle.jdbc.OracleResultSet
)谢谢,请验证我的编辑。我可以使用PreparedStatement.setBytes()
将13MB的字节[]
数组插入表中。这样,这种过时的数据类型比LOB更好。