ストアド プロシージャを使用してイメージ ファイルを読み込もうとしています。以下は、画像ファイルを取得するためのストアド プロシージャです。
CREATE PROCEDURE readImage
@sID int,
@img image output
AS
BEGIN
SET NOCOUNT ON;
SET @img=(SELECT s_Image FROM Student WHERE s_ID=@sID);
END
GO
以下は、ストアド プロシージャから返された値を取得するコードです。
SqlConnection con = new SqlConnection();
Connect conn = new Connect();
con = conn.getConnected();
con.Open();
SqlCommand cmd = new SqlCommand("readImage", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@sID", SqlDbType.Int).Value = 17;
SqlParameter retValue = cmd.Parameters.Add("@img", SqlDbType.Image);
retValue.Direction = ParameterDirection.ReturnValue;
try
{
cmd.ExecuteNonQuery();
MemoryStream ms = new MemoryStream((byte[])retValue.Value);
pictureBox1.Image = Image.FromStream(ms);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Refresh();
}
catch (InvalidOperationException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
}
ただし、コードを実行しようとすると、次のようになりますSqlException
。
プロシージャまたは関数 'readImage' には、指定されていないパラメーター '@img' が必要です。
私はすでに@img
変数を渡していますが。私を助けてください!ありがとう!