【发布时间】:2017-09-08 14:07:27
【问题描述】:
我有一个具有byte[] 属性的对象,我想将此值转换为正确的值,以便可以使用 T-SQL 将其插入到数据库中。
但我不知道如何将 byte[] 转换为插入的 T-SQL 的正确值。
谢谢。
【问题讨论】:
标签: c# sql-server tsql ado.net
我有一个具有byte[] 属性的对象,我想将此值转换为正确的值,以便可以使用 T-SQL 将其插入到数据库中。
但我不知道如何将 byte[] 转换为插入的 T-SQL 的正确值。
谢谢。
【问题讨论】:
标签: c# sql-server tsql ado.net
创建一个控制台应用程序项目并尝试此代码
// Sample Class
public class MyClass
{
public byte[] data;
}
// Main
static void Main(string[] args)
{
MyClass cls = new MyClass();
using (SqlConnection cn = new SqlConnection("CONNECTION STRING"))
{
cn.Open();
using (SqlCommand cmd = new SqlCommand("insert into MyTable values (@data)", cn))
{
cmd.Parameters.AddWithValue("@data", cls.data);
cmd.ExecuteNonQuery();
}
}
}
【讨论】:
Add 的重载被标记为已过时。您应该使用.AddWithValue("@data", cls.data); 或.Add("@data", SqlDbType.VarBinary).Value = cls.data;
您想转换为VarBinary。
请参阅以下内容:
简单示例(设置命令参数)
byte[] data;
command.Parameters.Add("@data", SqlDbType.VarBinary).Value = data;
如何传入 varbinary 的 T-SQL 示例
CREATE PROCEDURE YourStoredProc
@data varbinary(max)
AS
BEGIN
-- your code
END
【讨论】:
生成原始 varbinary 以插入数据库(复制粘贴案例)
string ToVarbinary(byte[] data)
{
var sb = new StringBuilder((data.Length * 2) + 2);
sb.Append("0x");
for (int i = 0; i < data.Length; i++)
{
sb.Append(data[i].ToString("X2"));
}
return sb.ToString();
}
【讨论】: