从c#向SQL中插入二进制数据,无需存储过程
有人知道是否可以在不使用存储过程的情况下从c#向SQL字段插入二进制数据吗 例如-将字节数组转换为base64或类似的格式,然后使用如下文本命令从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
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);
}
}