4

ストアド プロシージャを使用してイメージ ファイルを読み込もうとしています。以下は、画像ファイルを取得するためのストアド プロシージャです。

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変数を渡していますが。私を助けてください!ありがとう!

4

1 に答える 1

2

retValue.Direction = ParameterDirection.ReturnValue;に変更
retValue.Direction = ParameterDirection.Output;

于 2012-10-18T03:42:27.313 に答える