سلام
چطور مي تونم عكس رو در بانك ذخيره و بازيابي كنم
(با C# و در بانك sql2005)
قبلا سرچ كردم اما جوابي كه مد نظرم باشه پيدا نكردم ممنون ميشم راهنمايي كنيد
Printable View
سلام
چطور مي تونم عكس رو در بانك ذخيره و بازيابي كنم
(با C# و در بانك sql2005)
قبلا سرچ كردم اما جوابي كه مد نظرم باشه پيدا نكردم ممنون ميشم راهنمايي كنيد
یک فیلد Nvarchar در جدولتون به نام PictureURL در نظر میگیرید و آدرس عکس رو در اونجا ذخیره می کنید.
در هنگام خواندن رکورد، مقدار فیلد رو به شی Image نسبت میدید.
در هنگام نوشتن هم بعد از اینکه مکان مورد نظر عکس رو مشخص کردید آدرس رو در DB ذخیره میکنید.
من در بانك مسير عكس رو ذخيره كردم و نوع vaechar هم هست اما نميدونم چطور بازيابيش كنم و در يكي از سلول هاي گريد نشون بدم .اگه ميشه يه نمونه بذارين تا بهتر متوجه بشم
ممنون
شما اول باید یه عکس را توی صفحه اصلینون بیارید حالا یا با کد نویسی یا open file dialoge
public void OnUpload(Object sender, EventArgs e)
{
// Create a byte[] from the input file
int len = Upload.PostedFile.ContentLength;
byte[] pic = new byte[len];
Upload.PostedFile.InputStream.Read (pic, 0, len);
// Insert the image and comment into the database
SqlConnection connection = new
SqlConnection (@"server=INDIA\INDIA;database=iSense;uid=sa;pwd=i ndia");
try
{
connection.Open ();
SqlCommand cmd = new SqlCommand ("insert into Image "
+ "(Picture, Comment) values (@pic, @text)", connection);
cmd.Parameters.Add ("@pic", pic);
cmd.Parameters.Add ("@text", Comment.Text);
cmd.ExecuteNonQuery ();
}
finally
{
connection.Close ();
}
}
با سلام
اول یک picture box روی فرم قرار بده و یک openfiledialog به فرم اضافه کن
بعد یک دکمه روی فرم بذارید و فرم زیر رو توی اون بنویسید
من یک تابع دارم با تعریف زیر :
string s = Environment.CurrentDirectory;
ofd.Filter = "JPEG (*.JPG) | *.jpg|" + "Bitmap Files (*.bmp) | *.bmp";
if (ofd.ShowDialog() == DialogResult.OK)
{
strBK = ofd.FileName;
pic_BK.Image = System.Drawing.Bitmap.FromFile(strBK);
}
Environment.CurrentDirectory = s;
این تابع رو با دستور زیر فراخوانی می کنم :
public void INSERT_Picture_BK(string _ConnectionString, string path, string _FormName)
{
MyFunction MF = new MyFunction();
objConnection.ConnectionString = _ConnectionString;
objCommand.Connection = objConnection;
string strFileStream = string.Empty;
strFileStream = path;
if (strFileStream != null && strFileStream != "")
{
FileStream stream = new FileStream(strFileStream, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(stream);
byte[] photo = reader.ReadBytes((int)stream.Length);
reader.Close();
stream.Close();
objCommand.Parameters.Add("@Pic", SqlDbType.VarBinary, photo.Length).Value = photo;
}
else
{
objCommand.Parameters.Add("@Pic", SqlDbType.VarBinary).Value = DBNull.Value;
}
objCommand.CommandText = string.Format("UPDATE Pic_Main SET MainPic = @Pic WHERE Index_ = {0}", 0);
try
{
objConnection.Open();
objCommand.ExecuteNonQuery();
}
catch (SqlException error)
{
MessageBox.Show("درخواست مورد نظر قابل اجرا نمی باشد ، لطفاً بعداً اقدام نمایید", "اخطار", MessageBoxButtons.OK, MessageBoxIcon.Error);
MF.WriteError(error.Number, error.Message, _FormName, "SELECT_Picture_BK");
}
objConnection.Close();
}
توی دیتابیس هم یک فیلد از نوع زیر تعریف کنید
INSERT_Picture_BK(_ConnectionString, strBK, _FormName);
varbinary(MAX)