Extract LONGBLOB from MySQL in C #

I want to get LONGBLOB from my MySQL database, but I don't know how to do it. I searched interwebz, and nothing useful was found. When I remove LONGBLOB, I want to save it as an image.

This is what I have already tried:

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); 

Thanks in advance.

+2
source share
2 answers

I really did it as part of a project that I was working on ...

  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;
             }

         }

Hope this helps. Also please excuse any wrong encoding methods, this was written some time ago.

Thanks tom

+3
source

All Articles