مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

computersaba

عضویت از 1395/04/03

ورود اطلاعات به sql server

  • شنبه 21 اسفند 1395
  • 17:01
تشکر میکنم

سلام 

من دستور ورود اطلاعات به sqlserver رو توسط کد زیر نوشتم 

که درون ان از storedProc استفاده کردم اما مشکلی که اینجا وجود داره مشکل سرعت ورود اطلاعات هستش که مثلا اگر

10000 رکورد اطلاعات رو بخوام وارد کنم سرعت بسیار پایین میاید ممکنه یه بررسی بفرمایید 

      void ReadToTable()
        {
            try
            {
                if (dir != "")
                {
                    dic.Clear();
                    string[] lines = System.IO.File.ReadAllLines(dir);
                    foreach (string line in lines)
                    {
                        if (!string.IsNullOrEmpty(line))
                        {
                            l = line.Split('\t');
                            l[0] = l[0].Trim();
                            l[1] = l[1].Trim();
                            l[2] = l[2].Trim();
                            l[3] = l[3].Trim();
                            if (!string.IsNullOrEmpty(l[0]) && l[3] == "1" || l[3] == "0")
                            {
                                dic.Add(new KeyValuePair<string, string>(l[0], l[1]));
                                PersianCalendar persCal = new PersianCalendar();
                                SqlConnection sqlconn = new SqlConnection(DBsetting.Connstring);
                                SqlCommand sqlda = new SqlCommand("InsertReadd", sqlconn);
                                sqlda.CommandType = CommandType.StoredProcedure;
                                sqlda.Parameters.AddWithValue("@date", l[1]);
                                sqlda.Parameters.AddWithValue("@IDp", l[0]);
                                sqlda.Parameters.AddWithValue("@day", GetDayOfWeek(GetPerDate(l[1])));
                                sqlda.Parameters.AddWithValue("@nobatkari", "");//ntkari[idx].ToString());
                                sqlda.Connection.Open();
                                sqlda.ExecuteNonQuery();
                                sqlda.Connection.Close();
                            }
                            else
                            {
                                ReadDataAndInsertIntoTable(line);
                            }
                        }
                     
                    }
                    RefGrid();
                    foreach (var pair in dic)
                    {
                        InsertNobatKari(pair.Key, GetPerDate(pair.Value).ToString());
                    }
                }
               
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("there is no row at position 0"))
                {
                    MessageBox.Show("لطفا سطر خالی را انتخاب ننمایید");
                }
                else if (ex.Message.Contains("Cannot insert duplicate key row in object"))
                {
                    MessageBox.Show("امکان ورود سطر تکراری وجود ندارد");
                }
                else
                {
                    MessageBox.Show(ex.Message);
                }
            }        
        }

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 21 اسفند 1395
  • 17:37

کد ها مشکلی نداره

برای رکورد های بالا میتونید از Thread ها استفاده کنید تا برنامه هنگ نکنه

کاربر سایت

computersaba

عضویت از 1395/04/03

  • شنبه 21 اسفند 1395
  • 17:39

این حرفتون درست .اما برای افزایش سرعت insert  داده ها چی پیشنهاد میدی

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 21 اسفند 1395
  • 17:42

بهتزین حالت SP هست

ولی اگر از Entity استفاده کنید خیلی از موارد رو لحاظ میکنه و سرعت بیشتری به شما میده

بحث همزمانی را نیز کنترل میکنه

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)