我使用的是使用ajax控件工具包提供的默认文本编辑器,我需要将用户可以粘贴到编辑器中的图像保存到数据库中。数据库中的列是varbinary(MAX),但是当我尝试保存时,我得到以下错误
不允许从数据类型nvarchar(max)到varbinary(max)的隐式转换。使用CONVERT函数运行此查询
然后我将内容转换为字节,如此
var subgrantdesc = Convert.ToByte(grantdescription_editor.Content);
然后在参数定义中我有了这个
var param0 = new SqlParameter();
param0.ParameterName = "@desc";
param0.SqlDbType = System.Data.SqlDbType.VarBinary;
param0.Value = subgrantdesc;
sql.Parameters.Add(param0);
然而我收到错误:
System.FormatException:输入字符串的格式不正确。在System.Number.StringToNumber ....
上述错误指向我要转换为Byte
的代码行。
我想知道如何将通过编辑器控件输入的数据(图像和文本)保存到SQL Server数据库中。我还想知道是否会保留HTML格式。
任何帮助将不胜感激。
答案 0 :(得分:0)
应该有两种方法来解决这个问题。一: 提供字节var的长度。来自here
using(SqlCommand cmd = new SqlCommand("INSERT INTO mssqltable(varbinarycolumn) VALUES (@binaryValue)", conn))
{
// Replace 8000, below, with the correct size of the field
cmd.Parameters.Add("@binaryValue", SqlDbType.VarBinary, 8000).Value = arraytoinsert;
cmd.ExecuteNonQuery();
}
二:使用BitConverter
string data = "0x" + BitConverter.ToString(subgrantdesc).Replace("-", "");