将图像从Ajax Control Toolkit编辑器保存到SQL数据库

时间:2012-10-22 10:59:00

标签: c# asp.net sql-server-2008

我使用的是使用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格式。

任何帮助将不胜感激。

1 个答案:

答案 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("-", "");