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

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

کاربر سایت

yk2797

عضویت از 1396/04/23

مشکل time out در اجرای دستور sql

  • جمعه 23 تیر 1396
  • 12:56
تشکر میکنم
سلام.وقت بخیر. بنده در سی شارپ یک دکمه حاوی دستور دریافت و کپی محتوای یک فایل اکسل در بانک اس کیو ال ساخته ام در یک نمونه زمانی که محتوای فایل اکسل زیاد می شود مثلا ۷۰۰ هزار رکورد در زمان اجرا خطای time out را میده خواهشا راهنمایی بفرمایید.

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

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

سهیل علیزاده

عضویت از 1396/04/09

  • جمعه 23 تیر 1396
  • 13:02

از ADO.NET  استفاده کرده اید ؟

کاربر سایت

yk2797

عضویت از 1396/04/23

  • جمعه 23 تیر 1396
  • 13:10
منظورتون رو دقیق متوجه نمیشم.ببخشید
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • جمعه 23 تیر 1396
  • 13:13

این دستور sql از چه طریق اجرا می شود :)

کاربر سایت

yk2797

عضویت از 1396/04/23

  • جمعه 23 تیر 1396
  • 13:18
خود دستور در داخل دکمه نوشته شده اما برای کلیه اقدمات مانند درج انتخاب حذف یک کلاس هم تعریف شده
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • جمعه 23 تیر 1396
  • 13:21

timeout هنگام SELECT کردن اتفاق می افتد ؟

کاربر سایت

yk2797

عضویت از 1396/04/23

  • جمعه 23 تیر 1396
  • 13:33
زمانی که دکمه زده می شود تا محتوای فایل اکسل را در بانک کپی کند پس از چند ثانیه ایرور میده البته در مسیج باکسی که در کد داخل دکمه برای نمایش خطا تعریف شده زمانی که با خطا مواجه بشه خطا متناسب را نمایش میده. البته فایل با محتوای ۵۰۰ هزار تا را پس از چند ثانیه با موفقیت انجام میده اما زمانی که بیشتر از اون میشه با توجه به اینکه زمان بیشتری برا اجرا نیاز داره این خطا داده میشه. بنده حتی از دستور sqlcomman.time out=0 هم استفاده کردم اما این محدوده زمانی غیرفعال نشد. ببخشید من با گوشی دارم تایپیک می کنم و به برنامه ام دسترسی ندارم وگرنه کدهای مربوطه را براتون ارسال میکردم.
کاربر سایت

ایمان مدائنی

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

  • جمعه 23 تیر 1396
  • 13:46

میتونید زمان را از طریق SqlCommand افزایش دهید

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

scGetruntotals.CommandTimeout = 180;

کاربر سایت

yk2797

عضویت از 1396/04/23

  • جمعه 23 تیر 1396
  • 14:30
این دستور را در کجا تایپ کنم؟
کاربر سایت

ایمان مدائنی

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

  • جمعه 23 تیر 1396
  • 14:42

  scGetruntotals نام SqlCommand است

در دستورات خود قرار دهید و نام را جایگزین کنید

کاربر سایت

yk2797

عضویت از 1396/04/23

  • جمعه 23 تیر 1396
  • 14:54
بسیار ممنون تا چند لحظه دیگه تست میکنم بهتون نتیجه رو اعلام میکنم.
کاربر سایت

yk2797

عضویت از 1396/04/23

  • جمعه 23 تیر 1396
  • 19:23
آقای مدائنی عزیز سلام. دستور شما رو تست کردم کردم اما تفاوتی نکرد. اما کد دستور دکمه ای که این کار رور انجام میده در زیر براتون میگذارم خواهشا بررسی نمایید. private void button5_Click(object sender, EventArgs e) { DataBase db = new DataBase(); db.DoCommand("DELETE FROM T_student"); //انتخاب فا?ل اکسل OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "(انتخاب فا?ل اکسل "; ofd.Filter = "فا?ل اکسل 2003 (*.xls)|*.xls|فا?ل اکسل 2007 به بعد(*.xlsx)|*.xlsx"; if (ofd.ShowDialog() == DialogResult.OK) { string connStringExcel = ""; string SourceFilePath = ofd.FileName; connStringExcel = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + SourceFilePath + ";Extended Properties=Excel 12.0"; OleDbConnection excelConn = new OleDbConnection(connStringExcel); OleDbCommand excelCmd = new OleDbCommand("Select * From [Sheet1$]", excelConn); try { excelConn.Open(); OleDbDataReader excelReader = excelCmd.ExecuteReader(); string connStringSql = con.ConnectionString; SqlConnection sqlConn = new SqlConnection(connStringSql); excelCmd.CommandTimeout = 0; try { sqlConn.Open(); SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn); bulkCopy.DestinationTableName = "T_student"; bulkCopy.WriteToServer(excelReader); MessageBox.Show("ل?ست دانش آموزان با موفق?ت در?افت شد"); } catch (Exception exs) { ; MessageBox.Show(exs.Message, "error"); } finally { sqlConn.Close(); } } catch (Exception exo) { MessageBox.Show(exo.Message); } finally { excelConn.Close(); } } }
کاربر سایت

ایمان مدائنی

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

  • جمعه 23 تیر 1396
  • 20:13

لطفا برای درج کد از کلید کد ادیتور استفاده کنید

کدها قابل خوندن نیستند

کاربر سایت

yk2797

عضویت از 1396/04/23

  • جمعه 23 تیر 1396
  • 20:29
معذرت میخوام چون من جدیدا در سایت ثبت نام کردم دقیقا نمیدون کد ادیتور یعنی چه. لطفا راهنمایی بفرمایید
کاربر سایت

yk2797

عضویت از 1396/04/23

  • جمعه 23 تیر 1396
  • 21:01
کد رو در کد ایتور تنظیم کردم. ببینید خونده میشه private void button5_Click(object sender, EventArgs e) { DataBase db = new DataBase(); db.DoCommand("DELETE FROM T_student"); //انتخاب فایل اکسل OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "(������ ��?� ǘ�� "; ofd.Filter = "��?� ǘ�� 2003 (*.xls)|*.xls|��?� ǘ�� 2007 �� ���(*.xlsx)|*.xlsx"; if (ofd.ShowDialog() == DialogResult.OK) { string connStringExcel = ""; string SourceFilePath = ofd.FileName; connStringExcel = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + SourceFilePath + ";Extended Properties=Excel 12.0"; OleDbConnection excelConn = new OleDbConnection(connStringExcel); OleDbCommand excelCmd = new OleDbCommand("Select * From [Sheet1$]", excelConn); try { excelConn.Open(); OleDbDataReader excelReader = excelCmd.ExecuteReader(); string connStringSql = con.ConnectionString; SqlConnection sqlConn = new SqlConnection(connStringSql); try { sqlConn.Open(); SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn); bulkCopy.DestinationTableName = "T_student"; bulkCopy.WriteToServer(excelReader); MessageBox.Show("لیست با موفقیت دریافت شد"); } catch (Exception exs) { ; MessageBox.Show(exs.Message, "error"); } finally { sqlConn.Close(); } } catch (Exception exo) { MessageBox.Show(exo.Message); } finally { excelConn.Close(); } } }
کاربر سایت

ایمان مدائنی

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

  • جمعه 23 تیر 1396
  • 21:14

خیر

کلید کد

دومی از سمت راست در منوی ادیتور

کاربر سایت

yk2797

عضویت از 1396/04/23

  • جمعه 23 تیر 1396
  • 22:56
استاد عزیز بالاخره حل شد از راهنمایی شما بسیار تشکر میکنم.
کاربرانی که از این پست تشکر کرده اند

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

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

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