2013-10-14 6 views
2

Я показываю изображение во вводе с файлом типа, тогда я хочу сохранить это изображение в базе данных. I знаю, как хранить varbinary или изображение в db, но я не знаю, как получить доступ к входному файлу?Сохранение изображения в базе данных

SqlConnection con = new SqlConnection(stcon); 
     SqlCommand command = new SqlCommand(); 


      string path = ""; 
      System.Drawing.Image img = System.Drawing.Image.FromFile(path); 
      MemoryStream tmpStream = new MemoryStream(); 
      img.Save(tmpStream, ImageFormat.Png); // change to other format 
      tmpStream.Seek(0, SeekOrigin.Begin); 
      byte[] imgBytes = new byte[100000]; 
      tmpStream.Read(imgBytes, 0, 100000); 

      command.CommandText = "INSERT INTO image(image) VALUES (:image)"; 
      IDataParameter par = command.CreateParameter(); 
      par.ParameterName = "image"; 
      par.DbType = DbType.Binary; 
      par.Value = imgBytes; 
      command.Parameters.Add(par); 
      command.ExecuteNonQuery(); 
+0

Что такое устный точный вопрос ?? U не может сохранить изображение, которое вы хотите получить из базы данных ??? –

+0

В чем проблема? Вы хотите получить изображение из sql или еще? – Regon

+1

'ur', 'U'? Синтаксическая ошибка на этом комментарии :-) – Garry

ответ

1

Вы можете просто использовать System.IO.File.ReadAllBytes метод для чтения двоичного файла:

byte[] imgBytes = System.IO.File.ReadAllBytes(@"c:\temp\capture.png"); 

Так что в вашем случае вы можете использовать его как то (заменить путь):

string path = @"c:\temp\capture.png"; 
byte[] imgBytes = System.IO.File.ReadAllBytes(path); 

command.CommandText = "INSERT INTO image(image) VALUES (:image)"; 
IDataParameter par = command.CreateParameter(); 
par.ParameterName = "image"; 
par.DbType = DbType.Binary; 
par.Value = imgBytes; 
command.Parameters.Add(par); 
command.ExecuteNonQuery(); 
0

С вашими вопросами, я думаю, вы вставили изображение в таблицу и теперь хотите извлечь вставленное изображение. если это так, вы можете попробовать, как,

   string sql = ""; 
       string address = ""; 
       SqlConnection con = new SqlConnection(ConnectionString); 
       sql = "SELECT Image from ImageTable where imageId=1"; 

       DataSet ds = new DataSet(); 
       SqlCommand cmd = new SqlCommand(sql, con); 
       SqlDataAdapter adp = new SqlDataAdapter(); 
       adp.SelectCommand = cmd; 
       adp.Fill(ds,"Data"); 


       address = "C:\\Users\\CARDIT\\Desktop\\Imag1.jpeg"; 
       byte[] bytes = (byte[])ds.Tables["Data"].Rows[i][0]; 
       MemoryStream ms = new MemoryStream(bytes); 


       System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms); 

        Bitmap bmSave = new Bitmap(returnImage); 
        Bitmap bmTemp = new Bitmap(bmSave); 

        Graphics grSave = Graphics.FromImage(bmTemp); 
        grSave.DrawImage(returnImage, 0, 0, returnImage.Width, returnImage.Height); 

        bmTemp.Save(address); //If You want to save in Specific location 

        pictureBox1.Image = bmSave; //if you want to use Image in Picturebox Control; 
Смежные вопросы