0

SQL Server データベースからイメージを読み込もうとしていますが、次のエラーが発生します。

パラメータが無効です

誰が私を助けることができます?修正方法は?

byte[] im = connection.ReadImg(id);

if (im != null)
{
   MemoryStream st1 = new MemoryStream(im);
   pictureBox1.Image = Image.FromStream(st1);
}
else
   pictureBox1.Image = Image.FromFile(fn);

public byte[] ReadImg(string id)
{
    cmd.Connection = con;
    cmd.CommandText = "SELECT photo FROM User WHERE id=" + id;
    byte[] image = null;

    con.Open();

    try
    {
       image = (byte[])cmd.ExecuteScalar();
    }
    catch
    {
       image = null;
    }

    con.Close();

    return image;
}
4

2 に答える 2

2

が文字列の場合idは、文字列として渡す必要があります。

cmd.CommandText = "SELECT photo FROM User WHERE id=@id";
cmd.Parameters.AddWithValue("@id", id);

推奨されるパラメーターの方法を使用しない場合、問題は、文字列パラメーターを単一引用符で囲む必要があることです。

cmd.CommandText = "SELECT photo FROM User WHERE id='" + id + "'";

これは悪い習慣と見なされます。

于 2012-04-22T17:59:09.753 に答える
-1

SELECTステートメントはスカラーを返しません。ExecuteReaderまたは類似のものを使用する必要があります。

SqlDataReader reader = cmd.ExecuteReader();
using(reader)
{
    while(reader.Read())
    {
        // Do something with reader["photo"].
    }
}

さらに提供するには、idとのデータ型が必要photoです。

于 2012-04-29T00:31:53.920 に答える