10

SQL Server 2008 ストアド プロシージャを使用して、次の構文で新しいレコードを作成しています。

cmd.Parameters.Add("@photo", DBNull.Value)
cmd.ExecuteNonQuery()

しかし、結果は次のとおりです。

Operand type clash: nvarchar is incompatible with image 

写真は唯一のパラメーターではありませんが、唯一の画像です。nvarchar ではなく null 値を渡しています。何か不足していますか?

4

2 に答える 2

14

値として渡すとDBNull.Value、ADO.NET はパラメーターの型を判断できません。文字列または整数値を指定した場合、SQL パラメータの型は提供された値から導出できますが、どの型DBNull.Valueに変換する必要がありますか??

NULL 値を渡す場合はSqlDbType、明示的に次のように指定する必要があります。

Dim photoParam As New SqlParameter("@photo", SqlDbType.Image)
photoParam.Value = DBNull.Value
cmd.Parameters.Add(photoParam)

cmd.ExecuteNonQuery()

それはうまくいくはずです、私は願っています!

更新: C# での同じことは次のようになります。

SqlParameter photoParam = new SqlParameter("@photo", SqlDbType.Image);
photoParam.Value = DBNull.Value;
cmd.Parameters.Add(photoParam);

cmd.ExecuteNonQuery();

優れた無料の非常に便利なVB.NET から C# へのコンバーターがあります- 使用してください!

于 2010-03-10T21:35:38.117 に答える
0
 Dim photo_NULL As New SqlTypes.SqlBytes
.Pararameters.AddWithValue("@photo", IIf(IsNothing(Photo), photo_NULL, Photo))
.CommandType = CommandType.StoredProcedure
F_return = (.ExecuteNonQuery > 0)
于 2010-09-25T08:44:23.193 に答える