本文介绍了如何在Oracle中存储字节数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to store a short array of 64 bytes in Oracle database (a password hash). I thought char(64 byte) is what I need, but it seems like it doesn't work. In Microsoft SQL, I use binary and varbinary types. What type do I need to use in Oracle?

我发现的每个示例都使用blob存储二进制数据,但是我想blob仅用于大型对象,而不用于固定大小的短数组.

Every example I've found uses blob to store binary data, but I suppose blob is intended only for large objects, not for fixed size short arrays.

在更新数据时,这样的代码是否合适:

When updating the data, is the code like this appropriate:

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)
    {
        // ...
    }
}

还是我丢失了某些东西,字节数组参数无法像这样添加?

or am I missing something and byte array parameters cannot be added like this?

推荐答案

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

In addition to blob, Oracle also has the RAW datatype,

- Oracle 10g第2版数据类型

RAW的最大大小可以设置为2000个字节,而LONG RAW的最大大小可以为2GB.

RAW can be set up to a max size of 2000 bytes, with LONG RAW having a max size of 2GB.

但是:

这篇关于如何在Oracle中存储字节数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 18:54