我想在Oracle数据库中存储64个字节的短数组(密码哈希)。我以为char(64 byte)是我所需要的,但似乎不起作用。在Microsoft SQL中,我使用binary和varbinary类型。我需要在Oracle中使用哪种类型?
char(64 byte)
binary
varbinary
我发现的每个示例都blob用于存储二进制数据,但我想blob仅适用于大型对象,而不适用于固定大小的短数组。
blob
在更新数据时,像这样的代码是否合适:
byte[] passwordHash = GenerateHash(); using (OracleCommand updateHash = new OracleCommand("update A set passwordHash = :hash where EntryId = :id", oracleConnection)) { updateHash.Parameters.Add(":hash", passwordHash); updateHash.Parameters.Add(":id", entryId); if (updateHash.ExecuteNonQuery() != 1) { // ... } }
还是我错过了一些东西,不能像这样添加字节数组参数?
除了blob,Oracle还具有RAW数据类型,
RAW
RAW是长度可变的数据类型,例如VARCHAR2
- Oracle 10g版本2数据类型
RAW可以设置为最大大小为2000字节,LONG RAW最大大小为2GB。
LONG RAW
然而:
Oracle强烈建议您将LONG RAW列转换为二进制LOB(BLOB)列。LOB列受的限制比LONG列少得多。