0

我正在使用使用 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 服务器数据库中。我也想知道是否会保留 HTML 格式。

任何帮助将不胜感激。

4

1 回答 1

0

应该有两种方法来解决这个问题。一:提供字节var的长度。从这里

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("-", "");
于 2012-10-22T12:01:38.793 回答