小编典典

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

sql

我想在Oracle数据库中存储64个字节的短数组(密码哈希)。我以为char(64 byte)是我所需要的,但似乎不起作用。在Microsoft
SQL中,我使用binaryvarbinary类型。我需要在Oracle中使用哪种类型?

我发现的每个示例都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)
    {
        // ...
    }
}

还是我错过了一些东西,不能像这样添加字节数组参数?


阅读 174

收藏
2021-04-22

共1个答案

小编典典

除了blob,Oracle还具有RAW数据类型,

RAW是长度可变的数据类型,例如VARCHAR2

- Oracle
10g版本2数据类型

RAW可以设置为最大大小为2000字节,LONG RAW最大大小为2GB。

然而:

Oracle强烈建议您将LONG RAW列转换为二进制LOB(BLOB)列。LOB列受的限制比LONG列少得多。

2021-04-22