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

この問題を解決するには、2 つの方法があるはずです。1: バイト 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();
}

2: BitConverter を使用する

string data = "0x" + BitConverter.ToString(subgrantdesc).Replace("-", "");
于 2012-10-22T12:01:38.793 に答える