繁体   English   中英

如何将字节 [] 上传到 varbinary(max) 从 blob 到 sql

[英]how to upload bytes[] to varbinary(max) from blob to sql

我正在尝试填充此字段:

在此处输入图像描述

这是我的做法:

using (SqlConnection conn = new SqlConnection(connectionString))
{
    conn.Open();
    SqlTransaction transaction = conn.BeginTransaction();

    //here we are iterating through a list of queries that we want to execute inside of this transaction
    foreach (var query in queries)
    {
        //retrieve blob bytes from azure
        byte[] tifBytes = ReadInputName(query.TifFileName);
        byte[] rtfBytes = ReadInputName(query.RtfFileName);

        SqlCommand cmd = new SqlCommand(query.Query, conn, transaction);
        var rtfBytesParam = new SqlParameter("@rtfBytes", SqlDbType.Binary)
        {
            Value = rtfBytes
        };
        var tifBytesParam = new SqlParameter("@tifBytes", SqlDbType.Binary)
        {
            Value = tifBytes
        };
        cmd.Parameters.Add(rtfBytesParam);
        cmd.Parameters.Add(tifBytesParam);
        int rowsAffected = cmd.ExecuteNonQuery();
    }

    transaction.Commit();
}

以下是我遇到的例外情况,特别是Core.Net SqlClient 数据提供程序:不允许从数据类型 varchar 到 varbinary(max) 的隐式转换。 使用 CONVERT function 运行此查询。

在此处输入图像描述

请注意,正在执行的查询如下所示:

在此处输入图像描述

我究竟做错了什么? 我们如何将 blob 插入 varbinary(max) 字段?

您正在插入文字参数名称 ( '@tifBytes' ),这会导致 SQL 尝试在 VARBINARY 列中插入字符串“@tifBytes”,因此会出现错误。 删除参数周围的单引号。

另外,不要像这样构建 SQL。 文件名中可以有单引号。 当然,看起来一段代码构建了 SQL,而另一段代码提供了参数并运行了查询,但随后重新设计了它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM