یادداشت های من

درباره برنامه نویسی اندروید و سی شارپ

یادداشت های من

درباره برنامه نویسی اندروید و سی شارپ

مدیریت فایل ها در SQL Server

با سلام

امروز میخوام درباره مطلبی که هفته پیش یادگرفتم بنویسم.


عنوانشو میشه گذاشت : مدیریت فایل ها در SQL Server


در این یادداشت خواهیم آموخت که چطوری فایل های لازم رو بصورت باینری توی دیتابیس ذخیره کنیم.

همچنین متد FileStream رو هم مرور خواهیم کرد تا با نحوه کارش کاملا آشنا بشیم.


 ابتدا روش ذخیره به صورت Binary رو مرور میکنیم.

در این متد ما ابتدا هر فایل رو در آرایه ای از بایت ها میریزیم.


FileInfo fi = new FileInfo(openFileDlg.FileName);

FileStream fs = new FileStream(fi.FullName,FileMode.Open,FileAccess.Read);

BinaryReader rdr = new BinaryReader(fs);

byte[] fileData = rdr.ReadBytes((int)fs.Length);

rdr.Close();

fs.Close();


و بعد هم با یک دستور insert  براحتی این آرایه رو در یک فیلد از نوع VARBINARY(MAX) روی دیتابیس ذخیره میکنیم.


string cs = @"Data Source=FARHAD-PC;Initial Catalog=FeriDB;Integrated Security=True";

                using (SqlConnection con = new SqlConnection(cs))

                {

                    con.Open();

                    string sql = "INSERT INTO FileTable VALUES (@Name, @Data)";

                    SqlCommand cmd = new SqlCommand(sql, con);

                    cmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = fi.Name;

                    cmd.Parameters.Add("@Data", SqlDbType.Binary, fileData.Length).Value = fileData;

                    cmd.ExecuteNonQuery();

                    con.Close();

                }


چون کد ها کاملا گویا هستن از توضیحات اضافی خودداری میکنم.

بخش read از دیتابیس هم دقیقا به همین صورتیه که میبینید:


string cs = @"Data Source=FARHAD-PC;Initial Catalog=FeriDB;Integrated Security=True";

            using (SqlConnection con = new SqlConnection(cs))

            {

                con.Open();

                SqlTransaction txn = con.BeginTransaction();

                string sql = "SELECT Name,Data FROM FileTable";

                SqlCommand cmd = new SqlCommand(sql, con, txn);

                SqlDataReader rdr = cmd.ExecuteReader();

                while (rdr.Read())

                {

                    byte[] objContext = (byte[])rdr.GetValue(1);

                    string fName = rdr.GetValue(0).ToString();


                    string filename = @"d:\Temp\" + fName;

 

                    FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.Write);

                    fs.Write(objContext, 0, objContext.Length);

                    fs.Flush();

                    fs.Close();

                }

 

                rdr.Close();

                txn.Commit();

                con.Close();

            }


متد FileTable  دارای تنظیمات خاصی هست که میتونید از آدرس (^) بخونید.

بعد از انجام تنظیمات براحتی میتونید با این متد کار کنید.


لازم به ذکره تمامی این کد های هر دوروش داخل سورس موجوده که میتونید دانلودش کنید.


دانلود سورس



نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد