将Blob从oracle转换为byte []

时间:2014-10-17 07:37:18

标签: c#

我尝试读取blob并像byte []一样发送它。这是我使用的方法。

    public byte[] getBlob(long blobId)
    {
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = _connection;
        cmd.CommandText = "select TBlob_file FROM Tblob where blobId= " + blobId;
        object obj = cmd.ExecuteScalar();
        if (obj == null)
            return null;
        BinaryFormatter bf = new BinaryFormatter();
        MemoryStream ms = new MemoryStream();
        bf.Serialize(ms, obj);

        return ms.ToArray();
    }

我得到答案,但格式不好。我的回答如下:

<base64Binary>AAEAAAD/////AQAAAAAAAAAPAQAAAIFqBgAC/9j/4AAQSkZJRgABAQEASABIAAD/ .......

始终以AAEAAAD/////AQAAAAAAAAAPAQ开头我认为这是问题所在。也许我没有正确地在byte []中转换blob?

感谢名单

1 个答案:

答案 0 :(得分:0)

这是我的字符串到字节数组转换的方法(你必须先将obj转换为字符串):

public static byte[] StringToByteArray(string hex)
{
    int numberChars = hex.Length;
    var bytes = new byte[numberChars / 2];
    for (int i = 0; i < numberChars; i += 2)
        bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
    return bytes;
}

另外 - 请阅读有关sql注入攻击的内容,您可以从这里开始:http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/。您必须使用参数而不仅仅是字符串连接。