PDA

View Full Version : ذخیره عکس با کد insert



kh1387
چهارشنبه 25 اردیبهشت 1392, 08:33 صبح
با سلام
بنده یک کلاس sql نوشتم که متد insert آن بصورت زیر است:

internal void Insert(string tableName, string columnName, string Values)
{
using (con = new SqlConnection(strCon))
{
con.Open();
cmd = new SqlCommand(
"Insert Into " + tableName + "(" + columnName + ")" +
" Values(" + Values + ")", con);

cmd.ExecuteNonQuery();
con.Close();
}
}
حال وقتی میخواهم عکسی را در بانک ذخیره کنم نمی توانم از دستور پارامتری استفاده کنم بصورت :

sql.cmd.Parameters.Add("@p", System.Data.SqlDbType.VarBinary).Value = buffer;
راه حل چیست؟
با تشکر

tooraj_azizi_1035
چهارشنبه 25 اردیبهشت 1392, 11:42 صبح
private void updatedata()

{



//use filestream object to read the image.



//read to the full length of image to a byte array.



//add this byte as an oracle parameter and insert it into database.



try

{



//proceed only when the image has a valid path



if (imagename != "")

{



FileStream fs;



fs = new FileStream(@imagename, FileMode.Open, FileAccess.Read);



//a byte array to read the image



byte[] picbyte = new byte[fs.Length];



fs.Read(picbyte, 0, System.Convert.ToInt32(fs.Length));



fs.Close();



//open the database using odp.net and insert the data



string connstr = @"Data Source=.;Initial Catalog=TestImage;

Persist Security Info=True;User ID=sa";



SqlConnection conn = new SqlConnection(connstr);



conn.Open();



string query;



query = "insert into test_table(id_image,pic) values(" +

textBox1.Text + "," + " @pic)";



SqlParameter picparameter = new SqlParameter();



picparameter.SqlDbType = SqlDbType.Image;



picparameter.ParameterName = "pic";



picparameter.Value = picbyte;



SqlCommand cmd = new SqlCommand(query, conn);



cmd.Parameters.Add(picparameter);



cmd.ExecuteNonQuery();



MessageBox.Show("Image Added");



cmd.Dispose();



conn.Close();



conn.Dispose();



Connection();



}



}



catch (Exception ex)

{



MessageBox.Show(ex.Message);



}



}



//----------------------------------------


catch (Exception ex)

{



MessageBox.Show(ex.Message);



}



}

kh1387
چهارشنبه 25 اردیبهشت 1392, 13:34 عصر
دوست عزیز
اولا ممنون که جواب دادید.
ولی این کد که سخت تر شد و ناممکن تر!
من همه کد نویسی دیتابیس رو در کلاسش انجام دادم . نمی خوام دوباره command رو تعریف کنم.
میخوام طوری باشه که بتونم تصویر رو به کلاس نوشته شدم بفرستم.
خواهش می کنم یه راهی بدهید.
آخه اونهایی که کار می کنند هیچ وقت نخواستند تصویر رو در بانک قرار بدند؟!!!

kh1387
چهارشنبه 25 اردیبهشت 1392, 15:13 عصر
دوستان خواهش می کنم کمک کنید
خواهششششششششششششششششششششش ششششش
راهکار بدهید

tooraj_azizi_1035
چهارشنبه 25 اردیبهشت 1392, 21:30 عصر
sql.cmd.Parameters.Add("@p", System.Data.SqlDbType.Image).Value = buffer;

مهدی هادیان2
پنج شنبه 26 اردیبهشت 1392, 10:16 صبح
بسم الله الرحمن الرحیم
با سلام
قبل از اینکه با پارامتر بفرستید؛ از تبدیل زیر استفاده کنید:
ConvertImageTOByte((Image)(MYpictureBox.Image))
موفق باشید.