2011-11-24 7 views
2

MySQLデータベースからLONGBLOBを取得したいのですが、どうすればよいかわかりません。私はインターウェブを検索し、本当に役立つものは何も見つかりませんでした。 LONGBLOBを取得すると、イメージとして保存します。LONGBLOBをC#のMySQLから取得します

これは、私はすでに試したものです:事前に

 int bufferSize = 100; 
     byte[] bin = new byte[bufferSize]; 
     long retval = 0; 
     long startIndex = 0; 

     MemoryStream ms = null; 
     Image image = null; 

     MySqlCommand command = new MySqlCommand("select * from image where uid = @uid", Connection.Connect()); 
     command.Parameters.AddWithValue("@uid", "2"); 
     MySqlDataReader reader = command.ExecuteReader(); 

     if (reader.Read()) 
     { 
      retval = reader.GetBytes(reader.GetOrdinal("logo"), startIndex, bin, 0, bufferSize); 
     } 


     ms = new MemoryStream(bin); 
     image = Image.FromStream(ms); 

感謝。

答えて

3

...

 
public Bitmap loadImage(int imgID) 
     { 

      MySqlDataReader myData; 
      MySqlCommand cmd = new MySqlCommand(); 

      string SQL; 
      byte[] rawData; 
      MemoryStream ms; 
      UInt32 FileSize; 
      Bitmap outImage; 

      SQL = "SELECT ImageName, ImageSize, Image FROM Images WHERE ImageID ="; 
      SQL += imgID.ToString(); 

      try 
      { 
       cmd.Connection = connection; 
       cmd.CommandText = SQL; 

       myData = cmd.ExecuteReader(); 

       if (!myData.HasRows) 
        throw new Exception("There are no blobs to save"); 

       myData.Read(); 

       FileSize = myData.GetUInt32(myData.GetOrdinal("ImageSize")); 
       rawData = new byte[FileSize]; 

       myData.GetBytes(myData.GetOrdinal("Image"), 0, rawData, 0, (Int32)FileSize); 


       ms = new MemoryStream(rawData); 
       outImage = new Bitmap(ms); 
       ms.Close(); 
       ms.Dispose(); 

       myData.Close(); 
       myData.Dispose(); 

       cmd.Dispose(); 

       return outImage; 


      } 
      catch (MySqlException ex) 
      { 
       MessageBox.Show(ex.Message); 
       return null; 
      } 

     } 

これが役立つことを願っています。また、間違ったコーディングの慣行を許してください。これはしばらく前に書かれました。

おかげ トム

関連する問題