web-dev-qa-db-ja.com

SQL Serverから画像ボックスに画像を読み込む方法は?

SQL Serverから画像ボックスに画像を読み込む方法を見つけるために多くのことを試しましたが、役に立つ資料があまり見つかりませんでした。

まず、次のクエリを使用して画像をデータベースに保存しました。

insert into imageTest (pic_id, pic)
values(1, 'D:\11.jpg')

次に、画像を画像ボックスにロードします。

10

画像コンテンツをデータベースにアップロードしたことはありません。それは単なるファイル名です。

例として、使用するファイルパスがあるとします(質問の内容を考えると、そうであるようです)。アプリケーションでは、次の形式に従ってこれをデータベースにアップロードします。

byte[] image = File.ReadAllBytes("D:\\11.jpg");

SqlCommand sqlCommand = new SqlCommand("INSERT INTO imageTest (pic_id, pic) VALUES (1, @Image)", yourConnectionReference);
sqlCommand.Parameters.AddWithValue("@Image", image);
sqlCommand.ExecuteNonQuery();

picフィールドでは、データ型を変更する必要がある可能性が高いことを覚えておいてください。この情報の一般的なタイプはVARBINARYです。

次の部分は、ファイルをPictureBoxに読み込むことです。そのためには、データをSELECTする必要があります。

SqlDataAdapter dataAdapter = new SqlDataAdapter(new SqlCommand("SELECT pic FROM imageTest WHERE pic_id = 1", yourConnectionReference));
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);

if (dataSet.Tables[0].Rows.Count == 1)
{
    Byte[] data = new Byte[0];
    data = (Byte[])(dataSet.Tables[0].Rows[0]["pic"]);
    MemoryStream mem = new MemoryStream(data);
    yourPictureBox.Image= Image.FromStream(mem);
} 

そしてそれはそれについてのはずです。あなたはより良い安全チェックをしたいかもしれませんが、これはあなたが始めるのに役立つはずです。

25
doctorless

見てください: http://msdn.Microsoft.com/en-us/library/ms175915.aspx

変更したコード:

insert into imageTest (pic_id, pic)
select 1, BulkColumn
FROM Openrowset( Bulk 'D:\11.jpg', Single_Blob) as img
2
rzjfr

Muhammadを参照してください。動的なシナリオで画像を処理する場合、次のようになります。

  1. 画像をWebアプリケーションディレクトリ(/ images /など)にアップロードします。

  2. テーブルのデータベースフィールドにURLアドレスを格納します。

  3. 画像を挿入する場所に、画像ソースをデータベースフィールドに設定するだけで表示されます。

お役に立てれば

1
Pankaj Upadhyay

このコードで確認してください:

SqlDataAdapter dAdapter = new SqlDataAdapter(new SqlCommand("SELECT Photo FROM Image", conn));
        DataSet dSet = new DataSet();
        dAdapter.Fill(dSet);

        if (dSet.Tables[0].Rows.Count == 1)
        {
            Byte[] data = new Byte[0];
            data = (Byte[])(dSet.Tables[0].Rows[0]["Photo "]);
            MemoryStream mem = new MemoryStream(data);
            PictureBoxName.Image = Image.FromStream(mem);
         }

データに画像の列名を記載します。フォームで言及するように、ピクチャボックス名を変更します。

0
Karthik