web-dev-qa-db-ja.com

パラメーターvarbinaryデータ型のNULL値

パラメータvarbinaryデータ型にnull値を追加するにはどうすればよいですか?

次のコードを実行すると:

using (SqlConnection myDatabaseConnection1 = new SqlConnection(myConnectionString.ConnectionString))
{
    using (SqlCommand mySqlCommand = new SqlCommand("INSERT INTO Employee(EmpName, Image) Values(@EmpName, @Image)", myDatabaseConnection1))
    {
        mySqlCommand.Parameters.AddWithValue("@EmpName", textBoxEmpName.Text);
        mySqlCommand.Parameters.AddWithValue("@Image", DBNull.Value);
        myDatabaseConnection1.Open();
        mySqlCommand.ExecuteNonQuery();
    }
}

次のSystem.Data.SqlClient.SqlException

データ型nvarcharからvarbinary(max)への暗黙的な変換は許可されていません。 CONVERT関数を使用して、このクエリを実行します。

13
Karlx Swanovski

あなたはこのようなことを試すことができます:-

cmd.Parameters.Add( "@Image", SqlDbType.VarBinary, -1 );

cmd.Parameters["@Image"].Value = DBNull.Value;
5
Rahul Tripathi

「DBNull.Value」が機能しない理由がわかりません。そして、私は別の解決策がこの問題を解決できると考えています。

cmd.Parameters["@Image"].Value = System.Data.SqlTypes.SqlBinary.Null;
10
RDeveloper

これを試して :

mySqlCommand.Parameters.AddWithValue("@Image", new byte[]{});
5
Shamseer K
sqlCommand.Parameters.AddWithValue("@image", SqlBinary.Null);
2
kekotek

ストアドプロシージャにnull値を設定します。他に何もする必要はありません。

ex. @photo varbinary(max) = null,

ALTER PROCEDURE [dbo].[InsertOurTeam]
    @name nvarchar(50),
    @Sname nvarchar(50),
    @designation nvarchar(50),
    @photo varbinary(max) = null,
    @Pname nvarchar(50)=null,
    @psize bigint=null,
    @id int output
    AS
    BEGIN

        SET NOCOUNT ON;
        insert into OurTeam values (@name,@Sname,@designation,@photo,@Pname,@psize);

        select @id= SCOPE_IDENTITY();
END
1
yodhraj patil

私は問題なくこのようにします

SqlParameter image= new SqlParameter("@Image", SqlDbType.VarBinary, System.DBNull.Value);
mySqlCommand.Parameters.Add(image);
1
Ehsan