0 امتیاز

سلام به همه دوستان و اساتید بزرگوار
قبل از هر چیزی خدمتتون عرض کنم که کل انجمن رو زیر و رو کردم مطلب مشابهی پیدا نکردم به همین دلیل سوالم رو می پرسم شاید با کمک شما اساتید عزیز به جواب برسم
درضمن فکر کنم در آینده این تاپیک به درد خیلی ها بخوره چون تا جایی که من گشتم راجع به این موضوع هیچ مطلب مفیدی در سایت های داخلی ندیدم

بنده میخوام توی فرم سی شارپی که تهیه کردم بوسیه یک دکمه از کاربر یک فایل اکسل رو بخوام و بعد بتونم تمامی اطلاعات ردیف های اکسل رو درون بانک SQLite خودم بریزم
البته فایل اکسل باید از یک سری ستون های ثابت و مشخص پیروی کنه مثلا 8 ستون با داده هایی از یک نوع

خب این مطلب رو با جستجوهایی که کردم پیدا کردم که مثل اینکه از روش bulk insert استفاده کرده :

http://www.dotnettips.info/post/1704/%d8%ae%d9%88%d8%a7%d9%86%d8%af%d9%86-%d8%b3%d8%b1%db%8c%d8%b9-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-%d9%81%d8%a7%db%8c%d9%84-%d8%a7%da%a9%d8%b3%d9%84-%d9%88-%d8%b0%d8%ae%db%8c%d8%b1%d9%87-%d8%af%d8%b1-%d8%a8%d8%a7%d9%86%da%a9-sql

متاسفانه این روش رو SQLite جواب نمیده ...
تا جایی که من پیگیر شدم مثل اینکه باید از Transaction استفاده بشه ... نمیدونم راهش چیه یکجایی هم دیدم اشاره به کتابخانه EPPlus کرده بود

درکل ممنون میشم راهنمایی کنید دقیقا برای اتمام پروژه ام به همین مسئله نیازمندم
متشکرم

2 پاسخ

+1 امتیاز

دوستان من خودم این روش رو پیدا کردم :


1- ابتدا اطلاعات رو از فایل اکسل میخونم و میریزم درون یک دیتا گرید ویو
بوسیله این کدها که درون این لینک توضیح داده : https://www.mspsoft.com/1394/07/26/%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-excel-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE/


2- سپس تک تک اطلاعات رو از سلول های همون دیتاگرید ویو بوسیله insert درون پایگاه sqlite ذخیره می کنم
بوسیله این کد :

 

            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                string constring = "Data Source=Db_Gavahi.sqlite;Version=3";
                using (SQLiteConnection con = new SQLiteConnection(constring))
                {
                    using (SQLiteCommand cmd = new SQLiteCommand("INSERT INTO Per2 VALUES(@Kod, @Per, @Sho, @Mon)", con))
                    {
                        cmd.Parameters.AddWithValue("@Kod", row.Cells[0].Value);
                        cmd.Parameters.AddWithValue("@Per", row.Cells[1].Value);
                        cmd.Parameters.AddWithValue("@Sho", row.Cells[2].Value);
                        cmd.Parameters.AddWithValue("@Mon", row.Cells[3].Value);
                        con.Open();
                        cmd.ExecuteNonQuery();
                        con.Close();
                    }
                }
            }
            MessageBox.Show("Records inserted.");

 

خب در واقع مشکلی هم وجود نداره اما نمیدونم اینکار کار بهینه و درستی هست یا نه ....؟؟؟
من یک فایل اکسل با 4 ستون و تقریبا 6500 ردیف رو بوسیله این روش میریزم درون sqlite که حدودا 20 ثانیه طول میکشه البته روی سیستم خودم اینطوریه که سیستم رده بالایی هست نمیدونم روی سیستم های دیگه چقدر طول بکشه

ممنون میشم اگر روش بهینه تری هست بهم معرفی کنید

 

0 امتیاز
از اساتید بزرگوار کسی نظری نداره ... ؟؟؟
ممنون میشم از راهنمایی دریغ نکنید
متشکرم
سوال جدید

2,332 سوال

2,871 پاسخ

3,725 دیدگاه

3,905 کاربر

دسته بندی ها

...