如何在Oracle数据库中存储Java字节数组?

4 java oracle byte bytearray

我有一个AES密码的密码密钥,我需要将它存储在Oracle数据库列中.密码在Java中生成为字节数组,因此我需要找出将其转换为Oracle理解的数据类型的最佳方法,反之亦然.

Jus*_*ave 8

假设Java中的字节数组少于4000个元素,则可以将其存储RAW在Oracle 的列中.这告诉Oracle数据是二进制的,因此它不会尝试进行字符集转换.并且它是最少的开销(无论是在存储方面还是在处理数据的复杂性方面).

如果字节数组可能包含超过4000个元素,则可以将其存储在BLOB列中.

  • @a_horse_with_no_name - `LONG`和`LONG RAW`被描述为'CLOB`和`BLOB`.但是一个不错的`RAW(500)`列是存储500字节二进制数据的完美方式. (2认同)

a_h*_*ame 5

使用BLOB列和PreparedStatement:

CREATE TABLE pwd_table (id integer primary key, pwd blob);
Run Code Online (Sandbox Code Playgroud)

然后在您的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();
Run Code Online (Sandbox Code Playgroud)