Click here to Skip to main content
15,891,845 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello, i have this code

//the part for getting the byte array of image
C#
MemoryStream image=new MemoryStream() ;
Bitmap  imgO = new Bitmap(open.FileName);
imgO.Save(image, ImageFormat.Bmp);

//the fill db part
C#
sqlconn.Open();
           String sSQLCommand = "INSERT INTO ImageTable (CodImage,NameImage,Image,Distance,Split,Energy,Contrast,Entropy,Omogenity,Variance)" + "VALUES('"+Bob+"', '" + name + "','" + image.ToArray() + "','5','1','" + ai.Get_energy() + "','" + ai.Get_contrast() + "','" + ai.Get_entropy() + "','" + ai.Get_omogenity() + "','" + ai.Get_variance() + "' );";

           SqlCommand sqlc = new SqlCommand(sSQLCommand, sqlconn);
           sqlc.ExecuteNonQuery();
           sqlconn.Close();

//and for view part i have this(in this part i think i have an error)
C#
DataTable dt = new DataTable();
string sqlSelect = "select * from ImageTable";
SqlCommand cmd = new SqlCommand(sqlSelect, sqlconn);
  using (cmd)
           {
               SqlDataAdapter adp = new SqlDataAdapter(cmd);
               adp.Fill(dt);

           }
dataGridView1.DataSource = dt;

//sqlconn its the connection string;

i think its missing something and i cant find what, in ImageTable (the table of database) i have a collumn that stores data of type image, i converted the image to bytearray and succesfully stored it into database but when i want to view the images from database in a datagridview it throws me an error (something like parameter not valid). Can someone help me figureout where i made the mistake or there is another way to do the same thing?
Posted
Updated 14-Mar-12 0:41am
v3

Please see this link

http://stackoverflow.com/questions/9069742/store-image-in-database-and-retrieve-it[^]

at which, solution to similar problem is given

But I have a suggestion. Instead of creating DataTable, SqlCommand, SqlDataAdapter manually, you can try Typed DataSet using the AddNewDataSource wizard of Visual Studio.

And this article
General purpose class to fill DataTable(s) from DataBase and to save DataTable(s) to DataBase using reflection[^]

may be helpful to easily read data from database and save data to database.
In the example given in this article, in the Categories table of Northwind database, there is Picture field storing the image. I think it is relevant to your question.
 
Share this answer
 
Comments
ProEnggSoft 17-Mar-12 3:07am    
Thank you
C#
String InsertImgTableCommand = "INSERT INTO ImageTable (CodImage,NameImage,Image,Distance,Split,Energy,Contrast,Entropy,Omogenity,Variance) VALUES(@CodImage, @NameImage,@Image,@Distance,@Split,@Energy,@Contrast,@Entropy,@Omogenity,@Variance )";
           SqlCommand sqlc = new SqlCommand(InsertImgTableCommand, sqlconn);
           sqlc.Parameters.AddWithValue("@CodImage", codimg.ToString());
           sqlc.Parameters.AddWithValue("@NumeImage", name);
           sqlc.Parameters.AddWithValue("@Image", image.ToArray());
           sqlc.Parameters.AddWithValue("@Distance", distance);
           sqlc.Parameters.AddWithValue("@Split", 1);
           sqlc.Parameters.AddWithValue("@Energy", ai.Get_energy());
           sqlc.Parameters.AddWithValue("@Contrast", ai.Get_contrast());
           sqlc.Parameters.AddWithValue("@Entropy", ai.Get_entropy());
           sqlc.Parameters.AddWithValue("@Omogenity", ai.Get_omogenity());
           sqlc.Parameters.AddWithValue("@Variance", ai.Get_variance());

           sqlconn.Open();
           try
           {
               sqlc.ExecuteNonQuery();
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }
           finally
           {

               sqlconn.Close();
           }



I managed to find the error and its in the insert command. And is should`ve been like this
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900