Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从c#向SQL中插入二进制数据,无需存储过程_C#_Sql_Stored Procedures_Binary - Fatal编程技术网

从c#向SQL中插入二进制数据,无需存储过程

从c#向SQL中插入二进制数据,无需存储过程,c#,sql,stored-procedures,binary,C#,Sql,Stored Procedures,Binary,有人知道是否可以在不使用存储过程的情况下从c#向SQL字段插入二进制数据吗 例如-将字节数组转换为base64或类似的格式,然后使用如下文本命令 String.Format("update A set B = {0} where C = D", Convert.ToBase64String(b)); 其中b是字节数组 谢谢是的,我想你可以通过参数化查询来完成 这里的示例:当然,您应该使用参数化语句,但如果确实需要,您可以这样做: byte[] b = null; //(your input s

有人知道是否可以在不使用存储过程的情况下从c#向SQL字段插入二进制数据吗

例如-将字节数组转换为base64或类似的格式,然后使用如下文本命令

String.Format("update A set B = {0} where C = D", Convert.ToBase64String(b));
其中b是字节数组


谢谢

是的,我想你可以通过参数化查询来完成


这里的示例:

当然,您应该使用参数化语句,但如果确实需要,您可以这样做:

byte[] b = null; //(your input should be a byte[])
String.Format("update A set B = 0x{0} where C = D", BitConverter.ToString(b).Replace("-", "").ToLower());

SQL Server要求二进制数据为十六进制格式,不带连字符,小写前缀为“0x

请尝试此代码,可以使用命令。未注释的参数或注释的代码都可以使用。我在工作中使用OracleDataClient,所以我几乎完全从


编辑:假设b已经是字节[]。我只是查看了一些旧代码,并将参数更新为对我有效的参数(SQL Server 2005)

我收到以下错误:“以'D312E360A25E2E3CFD30A312030206F626A203C3C2F4669C7465722F466C6174654465636F64652F4C656E6774468203333363E3E73747265616D0A789C8551D'开头的标识符太长。”。最大长度为128。\r\n靠近“D312E360A25E2E3CFD30A312030206F626A203C3C2F4696C7465722F466C6174654465636F64652F4C656E6774468203333363E3E73747265616D0A789C8551D”的语法不正确。“对不起,我不理你。忘了用引号括起来。。谢谢您能告诉我如何将数据从datatable返回到字节数组中吗?是的,使用SqlDataReader,它将以字节[]的形式返回二进制文件
string commandText= "update A set B = @BIN where C = D";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(commandText, connection);
    command.Parameters.Add("@BIN", SqlDbType.Binary, b.Length).Value = b;    
    // command.Parameters.AddWithValue("@BIN ", b);

    try
    {
        connection.Open();
        Int32 rowsAffected = command.ExecuteNonQuery();
        Console.WriteLine("RowsAffected: {0}", rowsAffected);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}