PDA

View Full Version : حرفه ای: ذخیره فایل ها با پسوندهای افیس در بانک اطلاعاتی توسط سی شارپ



milad_khosravi
یک شنبه 05 مهر 1388, 14:51 عصر
سلام دوستان من میخام یک فایل وورد یا عکس یا هر چیو بیارم تو برنامه از طریق openFile Dialog بعد اون در sqlServer
ذخیره کنم
dataType اون در بانک varBinaryهست
چه کدی باید بنویسم

mahdi_7610
یک شنبه 05 مهر 1388, 15:48 عصر
سلام دوستان من میخام یک فایل وورد یا عکس یا هر چیو بیارم تو برنامه از طریق openFile Dialog بعد اون در sqlServer
ذخیره کنم
dataType اون در بانک varBinaryهست
چه کدی باید بنویسم

نمونه های زیادی توی سایت هست . جستجو کنید به نتیجه می رسید .

http://www.barnamenevis.org/forum/showthread.php?t=115600

این مقاله را هم ببینید بد نیست

http://www.afg-home.com/Topic.php?tid=7

milad_khosravi
دوشنبه 06 مهر 1388, 00:32 صبح
نمونه های زیادی توی سایت هست . جستجو کنید به نتیجه می رسید .

http://www.barnamenevis.org/forum/showthread.php?t=115600

این مقاله را هم ببینید بد نیست

http://www.afg-home.com/Topic.php?tid=7

اینا در مورد عکس هسن
من میخام یه فایل وورد را مثلا یک نامه را با برنامه در پایگاه ذخیره کنم
می تونی کمکم کنی
اگه لینک داری بزار واسم
ممنون میشم

mahdi_7610
دوشنبه 06 مهر 1388, 09:23 صبح
فايلهاي word با عکس تفاوت چنداني ندارند .

milad_khosravi
دوشنبه 06 مهر 1388, 11:36 صبح
فايلهاي word با عکس تفاوت چنداني ندارند .

ممنون من فکر می کردم فرق داره
حالا فایلهای دیگه هم همینطوره ؟
برای بازیابی فرق چندانی دارن با هم
مثلا یک فایل اکسل یا وورد برای بازیابی فرقی دارن یا مثل عکس میمونند.

و یک سوال دیگه من میخام اطلاعات یک دیتاگریو ویوو رو به یک فایل اکسل منتقل کنم و در اونجا در محیط اکسل نمایش بدهد
می تونی راهنماییم کنی
اصلا کدهاشو بلد نیستم
ممنون

milad_khosravi
سه شنبه 07 مهر 1388, 16:11 عصر
SqlCommand myCommand = new SqlCommand();
SqlDataReader mydr;
string strselect = "SELECT code_perseneli, vazatef FROM vazayef WHERE (code_perseneli = @code_perseneli) ";
myCommand.CommandText = strselect;
myCommand.CommandType = CommandType.Text;
myCommand.Connection = form_main.Conection;
myCommand.Parameters.Add("@code_perseneli", SqlDbType.BigInt);
myCommand.Parameters[0].Value = Int64.Parse(txt_code_perseneli.Text);
mydr = myCommand.ExecuteReader();
if (mydr.Read())
{
byte[] arrfile = (byte[])mydr["vazatef"];
MemoryStream ms = new MemoryStream(arrfile);
richTextBox1.Text =
}
mydr.Close();


در مورد بازیابی فایل از بانک هست میخام فایل رو با پسوندی doc در rich text box نمایش بدم
جلوی rich text box چی باید بنویسم واقعا مخم هنگ کرده
برای عکس می نوشتیم

image.fromstream(ms)

اینج باری فایل چی بنویسم
ممنون

milad_khosravi
چهارشنبه 08 مهر 1388, 11:13 صبح
کسی چیزی نمیدونه
من شدیدن بهش نیاز دارم؟
ممنون میشم کمک کنین

milad_khosravi
پنج شنبه 09 مهر 1388, 23:32 عصر
کسی اگر چیزی در مردش میدون کمک کنه من پروژه ام گیره همینه

Reza_Yarahmadi
جمعه 10 مهر 1388, 19:13 عصر
یه راه ساده اینه که اول اطلاعات خونده شده از بانک رو توی یه فایل ذخیره کنی (بالطبع باید پسوند فایل هم توی بانک ذخیره شده باشه) بعد فایل رو باز کنی (با توجه به نوع فایل!!) ، زمان بسته شدن برنامه یا هر زمان دیگه ای هم این فایل رو پاک کنی.

milad_khosravi
شنبه 11 مهر 1388, 10:53 صبح
salam mercc az rahnamaee

faghat ye soal in kar baeese afzonegi nemishe
yani ye baram to file zakhire beshe
intory ke koli hajmo migire
badesham age mitonid ye chan khat code sho vasam bezarid

thanks

Reza_Yarahmadi
شنبه 11 مهر 1388, 11:31 صبح
توی این حالت چون بعد از تموم شدن کار با فایل ، اونو حذف میکنیم نمیشه گفت افزونگی رخ میده!

SqlCommand Cmd = new SqlCommand("Select FileValue,Suffix From TableName Where ...", Conn);
SqlDataReader Dr;
Conn.Open();
Dr = Cmd.ExecuteReader();
if (Dr.Read())
{
File.WriteAllBytes("Temp." + Dr["Suffix"], (byte[])Dr["FileValue"]);
}
//Open Temp File Via Respective SoftWare
بعد از تموم شدن کارت با فایل هم اونو پاک کن.

milad_khosravi
شنبه 11 مهر 1388, 13:29 عصر
vaghty data az erver miad va etelaat dar server haste ke dar copmutere server hst
ijad file dar computere server anjam shavad
?

yani ye fileijad konam dar server ba va har clienty ke be server connetct mishe baraye bazyabi ye file dar server injad shavad va bad az vakeshi
file pak shavad

manzoreton in bood
?


agar baraton maghdore mishe code kamele in karo vasam benevisid
chon man ba fila ha ye kam moshkel daram


kheili az lotfeton mamnon misham

Reza_Yarahmadi
شنبه 11 مهر 1388, 16:14 عصر
خواهشا فارسی بنویسید ، کلی به خودم فشار آوردم تا تونستم چیزی رو که نوشتید بخونم !! :چشمک:
اگه فقط بانک روی سرور قرار داره که مشکلی ندارید ، این دستور فایل رو روی کلاینت و توی دایرکتوری برنامه ذخیره میکنه.
کد دیگه ای نمیخواد! فقط با توجه به نوع فایل با برنامه مورد نیازش بازش کنید(که به کار با فایل ربطی نداره!)
ولی اگر برنامه شما یه برنامه سرور/کلاینتی (که مثلا با Socket نوشته شده) است و برنامه کلاینت درخواست کاری رو به سرور میفرسته و سرور یه سری کارها انجام میده و فقط نتیجه رو به کلاینت میفرسته که وضع فرق میکنه. کجا درست کردن فایل بستگی به این داره که کدوم برنامه قراره فایل رو باز کنه ، اگه کلاینت قرار باز کنه که بازم میشه سرور فایل رو بفرسته واسه کلاینت و روی کلاینت ذخیره بشه. ولی اگه قراره سرور فایل رو باز کنه فکر نمیکنم چاره ای جز درست کردن فایل روی سرور باشه.

milad_khosravi
شنبه 11 مهر 1388, 16:29 عصر
مرسي كهجواب دادين
برنامه ما client/server ي هستش ،
برنامه به سرور وصل ميشه فايل رو تو بانك ذخيره ميكنه و بعد در گزارش گيري از بانك فايل رو بازيابي ميكنه كه تو بانك varbinary ذخيره ميشه به نر شما چه راه حلي بهتره
من در ابتداي تاپيك كد برنامرو گذاشتم كلا جواب نميده وباره ميزارم شما ببين كجاي كار ايراد داره
اين براي ذخيره


private void button1_Click(object sender, EventArgs e)
{
try
{
if (openFileDialog2.ShowDialog() == DialogResult.OK)
{
rtxt_vazayef.Text = openFileDialog2.FileName;

}
}
catch
{
MessageBox.Show(e.ToString());
}
}
private void aquaButton1_Click(object sender, EventArgs e)

MemoryStream ms1 = new MemoryStream();
byte[] arrfile = ms1.GetBuffer();
ms1.Close();
myCommand.Parameters.Add("@vazatef", SqlDbType.VarBinary);
myCommand.Parameters[i].Direction = ParameterDirection.Input;
myCommand.Parameters[i].Value = arrfile;
//

myCommand.ExecuteNonQuery();


و اين هم براي بازيابي كه ميدونم كلي اشتباه توش هست


SqlCommand myCommand = new SqlCommand();
SqlDataReader mydr;
string strselect = "SELECT code_perseneli, vazatef FROM vazayef WHERE (code_perseneli = @code_perseneli) ";
myCommand.CommandText = strselect;
myCommand.CommandType = CommandType.Text;
myCommand.Connection = form_main.Conection;
myCommand.Parameters.Add("@code_perseneli", SqlDbType.BigInt);
myCommand.Parameters[0].Value = Int64.Parse(txt_code_perseneli.Text);
mydr = myCommand.ExecuteReader();
if (mydr.Read())
{
byte[] arrfile = (byte[])mydr["vazatef"];
MemoryStream ms = new MemoryStream(arrfile);
StreamReader fileRead = new StreamReader(ms);
string word = "";
word = fileRead.ReadToEnd();
richTextBox1.Text = word;
}
mydr.Close();

Reza_Yarahmadi
یک شنبه 12 مهر 1388, 11:12 صبح
کد بازیابی به نظر مشکلی نداره ولی کد ذخیره فکر کنم ایراد داشته باشه
توی کد ذخیره یه MemoryStream تعریف کردید و بدون اینکه بافری واسش تعریف کنید درخواست بافر میکنید که توی این حالت مقدار Null رو بر میگردونه
برای حلش کد زیر رو امتحان کنید

private void aquaButton1_Click(object sender, EventArgs e)

byte[] arrfile = File.ReadAllBytes(rtxt_vazayef.Text);
myCommand.Parameters.Add("@vazatef", SqlDbType.VarBinary);
myCommand.Parameters[i].Direction = ParameterDirection.Input;
myCommand.Parameters[i].Value = arrfile;
//

myCommand.ExecuteNonQuery();

jigily
یک شنبه 03 مرداد 1389, 12:52 عصر
میخوام فایل ورد را بازیابی کنم و در سیستم ذخیره کنم چه کدی باید بنویسم ؟