2011-06-23 11 views
1

私はC#.Net WindowsフォームでMicrosoft Accessデータベースに挿入するイメージを変換しようとしています。 また、私は画像を削除して変更したい。 しかし、私はそれを行う方法を知らない。 私のためのコードセグメントを書いてください。Microsoft Accessデータベースにイメージを挿入するには?

+1

私を助けてください。あなたの助けが必要です。 – Saya

答えて

3

私は画像をバイト[]に変換します。その後、バイト[]を画像に戻します。

public static byte[] ImageToByte(Image img) 
{ 
    ImageConverter converter = new ImageConverter(); 
    return (byte[])converter.ConvertTo(img, typeof(byte[])); 
} 

public static Image ImageFromByte(byte[] image) 
{ 
    ImageConverter ic = new ImageConverter(); 
    Image img = (Image)ic.ConvertFrom(image); 
    return img; 
} 
+0

はいsir.But私はどのように変換し、回復するのか分からない。 – Saya

+0

サンプルを追加しました。ごめんなさい。 System.Drawing名前空間も使用します。 –

+0

私を助けてくれてありがとう。私はそれをテストします。 – Saya

0
using (var connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BlankDatabase.mdb")) 
{ 
    connection.Open(); 

    // Create table 
    using (var command = connection.CreateCommand()) 
    { 
     command.CommandText = @" 
      CREATE TABLE FileTable (
       FileName VARCHAR(255), 
       File IMAGE) 
      "; 
     command.ExecuteNonQuery(); 
    } 

    var imageContent = File.ReadAllBytes(@"C:\logo.png"); 

    // upload image to the table 
    using (var command = connection.CreateCommand()) 
    { 
     command.CommandText = @" 
      INSERT INTO FileTable (FileName, File) 
      VALUES (@FileName, @File) 
      "; 
     command.Parameters.AddWithValue("@FileName", "Logo"); 
     command.Parameters.AddWithValue("@File", imageContent); 
     command.ExecuteNonQuery(); 
    } 

    // retreive image from the table 
    using (var command = connection.CreateCommand()) 
    { 
     command.CommandText = @" 
      SELECT File 
      FROM FileTable 
      WHERE FileName = 'Logo' 
      "; 
     var readImageContent = (byte[])command.ExecuteScalar(); 
     File.WriteAllBytes(@"C:\logo1.png", readImageContent); 
    } 

    // alter image from the table 
    using (var command = connection.CreateCommand()) 
    { 
     command.CommandText = @" 
      UPDATE FileTable 
      SET File = @File 
      WHERE FileName = 'Logo' 
      "; 
     command.Parameters.AddWithValue("@File", imageContent); 
     command.ExecuteNonQuery(); 
    } 

    // delete image from the table 
    using (var command = connection.CreateCommand()) 
    { 
     command.CommandText = @" 
      DELETE FROM FileTable 
      WHERE FileName = 'Logo' 
      "; 
     command.ExecuteNonQuery(); 
    } 
} 

このコードでは、BlankDatabase.mdbは空のMS Accessデータベースファイルです。

+0

私にお答えいただきありがとうございます。 – Saya

+0

@Saya - これがあなたの質問に答えるかどうか教えてください。 –

+0

はいはい。私はそれを試して返します。 – Saya