我有一个 AES 密码的密码密钥,我需要将它存储在 Oracle 数据库列中。密码在 Java 中生成为字节数组,因此我需要找出将其转换为 Oracle 理解的数据类型的最佳方法,反之亦然。
user4903
问问题
25184 次
3 回答
9
假设 Java 中的字节数组的元素少于 4000 个,您可以将其存储RAW
在 Oracle 中的列中。这告诉 Oracle 数据是二进制的,因此它永远不会尝试进行字符集转换。它是最少的开销(无论是在存储方面还是在处理数据的复杂性方面)。
如果字节数组可能包含超过 4000 个元素,则可以将其存储在BLOB
列中。
于 2012-04-12T22:58:37.177 回答
8
使用 BLOB 列和 PreparedStatement:
CREATE TABLE pwd_table (id integer primary key, pwd blob);
然后在您的 Java 代码中:
byte[] data = ... // obtain the byte array
PreparedStatement pstmt = connection.prepareStatement(
"insert into pwd_table (id, pwd) values (?, ?)");
pstmt.setInt(1, 42);
pstmt.setBytes(2, data);
pstmt.executeUpdate();
connection.commit();
于 2012-04-12T22:59:32.863 回答
1
定义理解。
如果您将密码密钥存储在数据库中,您可能需要重新考虑这一点。但是,您有几个直接的选择。
- 将字节数组转换为 UU 编码的 ASCII 字符串,然后将其存储在 VARCHAR 字段中。
- 将字节数组存储到 CLOB 或 BLOB 中。
于 2012-04-12T22:56:30.510 回答