تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] عملية ال INSERT بطيئة جدا
#1
اهلا بكم

انا اتعامل مع SQLite

في عملية ال INSERT  
حاولت انزل  40000 سجل في قاعدة البيانات

وعند التنزيل ياخذ مني تقريبا 3 ساعات  او اكثر

عملت بحث في النت واتضح لي بان هناك اكواد او طريقة كتابة الكود تساعد على تسريع التنزيل

الكود اللي اعمل عليه 

كود :
Dim cmdi As New SQLiteCommand(String.Format(" SELECT COUNT(*) FROM DB{0} WHERE CALLop = @CALLop  and   DateNumber = @DateNumber  and  time_on = @time_on", strcallbk), con)
       cmdi.Parameters.AddWithValue("@CALLop", colcall.Trim())
       cmdi.Parameters.AddWithValue("@DateNumber", qso_date.Trim())
       cmdi.Parameters.AddWithValue("@time_on", coltimex.Trim())

       If cmdi.ExecuteScalar = 0 Then
           Dim cmd As New SQLiteCommand(String.Format("INSERT INTO DB{0} (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)", strcallbk), con)
           cmd.Parameters.AddWithValue("@CALLop", colcall.Trim())
           cmd.Parameters.AddWithValue("@qso_date", bkd.Trim())
           cmd.Parameters.AddWithValue("@timek", timek.Trim())
           cmd.Parameters.AddWithValue("@bands", colbands.Trim())
           cmd.Parameters.AddWithValue("@modes", colmodes.Trim())
           cmd.Parameters.AddWithValue("@Lfullname", colLfullname.Trim())
           cmd.Parameters.AddWithValue("@station_callsign", colstation_callsign.Trim())
           cmd.Parameters.AddWithValue("@dxcc", coldxcc.Trim())
           cmd.Parameters.AddWithValue("@cqz", colcqz.Trim())
           cmd.Parameters.AddWithValue("@ituz", colituz.Trim())
           cmd.Parameters.AddWithValue("@rst_sent", colrst_sent.Trim())
           cmd.Parameters.AddWithValue("@rst_rcvd", colrst_rcvd.Trim())
           cmd.Parameters.AddWithValue("@lotw_qsl_sent", collotw_qsl_sent.Trim())
           cmd.Parameters.AddWithValue("@lotw_qsl_rcvd", collotw_qsl_rcvd.Trim())
           cmd.Parameters.AddWithValue("@eqsl_qsl_sent", coleqsl_qsl_sent.Trim())
           cmd.Parameters.AddWithValue("@eqsl_qsl_rcvd", coleqsl_qsl_rcvd.Trim())
           cmd.Parameters.AddWithValue("@qsl_sent", colqsl_sent.Trim())
           cmd.Parameters.AddWithValue("@qsl_rcvd", colqsl_rcvd.Trim())
           cmd.Parameters.AddWithValue("@qsl_sent_date", colqsl_sent_date.Trim())
           cmd.Parameters.AddWithValue("@qsl_print", colqsl_print.Trim())
           cmd.Parameters.AddWithValue("@country", colcountry.Trim())
           cmd.Parameters.AddWithValue("@qth", colqth.Trim())
           cmd.Parameters.AddWithValue("@LAT", colLAT.Trim())
           cmd.Parameters.AddWithValue("@LON", colLON.Trim())
           cmd.Parameters.AddWithValue("@GRIDSQUARE", colGRIDSQUARE.Trim())
           cmd.Parameters.AddWithValue("@Lqslmgr", colLqslmgr.Trim())
           cmd.Parameters.AddWithValue("@PFX", colPFX.Trim())
           cmd.Parameters.AddWithValue("@freq", colfreq.Trim())
           cmd.Parameters.AddWithValue("@DateNumber", qso_date.Trim())
           cmd.Parameters.AddWithValue("@iota", coliota.Trim())
           cmd.Parameters.AddWithValue("@bk_qsl_sent", bk_qsl_sent.Trim())
           cmd.Parameters.AddWithValue("@time_on", coltime_on.Trim())
           cmd.Parameters.AddWithValue("@state", state.Trim())
           cmd.Parameters.AddWithValue("@operato", operato.Trim())
           cmd.Parameters.AddWithValue("@nameop", nameop.Trim())
           cmd.Parameters.AddWithValue("@Continent", Continent.Trim())

           cmd.Parameters.AddWithValue("@clublog_qsl_sent", clublog_qsl_sent.Trim())
           cmd.Parameters.AddWithValue("@hamqth_qsl_sent", hamqth_qsl_sent.Trim())
           cmd.ExecuteNonQuery()
           cmd.Dispose()


           Label1.Text = Val(Label1.Text) + 1
       Else

           Label5.Text = Val(Label5.Text) + 1

       End If


هنا يتحقق من القاعد هل السجل موجود او غير موجود
كود :
Dim cmdi As New SQLiteCommand(String.Format(" SELECT COUNT(*) FROM DB{0} WHERE CALLop = @CALLop  and   DateNumber = @DateNumber  and  time_on = @time_on", strcallbk), con)
       cmdi.Parameters.AddWithValue("@CALLop", colcall.Trim())
       cmdi.Parameters.AddWithValue("@DateNumber", qso_date.Trim())
       cmdi.Parameters.AddWithValue("@time_on", coltimex.Trim())

اذا غير موجود يقوم بتنزيله

كود :
       If cmdi.ExecuteScalar = 0 Then
           Dim cmd As New SQLiteCommand(String.Format("INSERT INTO DB{0} (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)", strcallbk), con)
           cmd.Parameters.AddWithValue("@CALLop", colcall.Trim())
           cmd.Parameters.AddWithValue("@qso_date", bkd.Trim())
           cmd.Parameters.AddWithValue("@timek", timek.Trim())
           cmd.Parameters.AddWithValue("@bands", colbands.Trim())
           cmd.Parameters.AddWithValue("@modes", colmodes.Trim())
           cmd.Parameters.AddWithValue("@Lfullname", colLfullname.Trim())
           cmd.Parameters.AddWithValue("@station_callsign", colstation_callsign.Trim())
           cmd.Parameters.AddWithValue("@dxcc", coldxcc.Trim())
           cmd.Parameters.AddWithValue("@cqz", colcqz.Trim())
           cmd.Parameters.AddWithValue("@ituz", colituz.Trim())
           cmd.Parameters.AddWithValue("@rst_sent", colrst_sent.Trim())
           cmd.Parameters.AddWithValue("@rst_rcvd", colrst_rcvd.Trim())
           cmd.Parameters.AddWithValue("@lotw_qsl_sent", collotw_qsl_sent.Trim())
           cmd.Parameters.AddWithValue("@lotw_qsl_rcvd", collotw_qsl_rcvd.Trim())
           cmd.Parameters.AddWithValue("@eqsl_qsl_sent", coleqsl_qsl_sent.Trim())
           cmd.Parameters.AddWithValue("@eqsl_qsl_rcvd", coleqsl_qsl_rcvd.Trim())
           cmd.Parameters.AddWithValue("@qsl_sent", colqsl_sent.Trim())
           cmd.Parameters.AddWithValue("@qsl_rcvd", colqsl_rcvd.Trim())
           cmd.Parameters.AddWithValue("@qsl_sent_date", colqsl_sent_date.Trim())
           cmd.Parameters.AddWithValue("@qsl_print", colqsl_print.Trim())
           cmd.Parameters.AddWithValue("@country", colcountry.Trim())
           cmd.Parameters.AddWithValue("@qth", colqth.Trim())
           cmd.Parameters.AddWithValue("@LAT", colLAT.Trim())
           cmd.Parameters.AddWithValue("@LON", colLON.Trim())
           cmd.Parameters.AddWithValue("@GRIDSQUARE", colGRIDSQUARE.Trim())
           cmd.Parameters.AddWithValue("@Lqslmgr", colLqslmgr.Trim())
           cmd.Parameters.AddWithValue("@PFX", colPFX.Trim())
           cmd.Parameters.AddWithValue("@freq", colfreq.Trim())
           cmd.Parameters.AddWithValue("@DateNumber", qso_date.Trim())
           cmd.Parameters.AddWithValue("@iota", coliota.Trim())
           cmd.Parameters.AddWithValue("@bk_qsl_sent", bk_qsl_sent.Trim())
           cmd.Parameters.AddWithValue("@time_on", coltime_on.Trim())
           cmd.Parameters.AddWithValue("@state", state.Trim())
           cmd.Parameters.AddWithValue("@operato", operato.Trim())
           cmd.Parameters.AddWithValue("@nameop", nameop.Trim())
           cmd.Parameters.AddWithValue("@Continent", Continent.Trim())

           cmd.Parameters.AddWithValue("@clublog_qsl_sent", clublog_qsl_sent.Trim())
           cmd.Parameters.AddWithValue("@hamqth_qsl_sent", hamqth_qsl_sent.Trim())
           cmd.ExecuteNonQuery()
           cmd.Dispose()


           Label1.Text = Val(Label1.Text) + 1


واذا موجود يقوم بتعدي وعدم انزاله


كود :
       Else

           Label5.Text = Val(Label5.Text) + 1

       End If


طبعا هنا يحسب لي عدد اللي تم انزاله وعدد اللي لم يتم انزاله

كود :
           Label1.Text = Val(Label1.Text) + 1
       Else

           Label5.Text = Val(Label5.Text) + 1

       End If


السؤال الان

هل الكود صحيح للعلم هو شغال ومافي اي مشكله
بس مشكلته البطئ في التنزيل

هل في طريقة اخرى كود اخر

من عمليات البحث حصلت هذا الموضوع والكود التالي
https://www.jokecamp.com/blog/make-your-...fast-in-c/

بس مع الاسف هو C#

وما عرفت اجربة في VB.NET



شكرا على المساعدة لان فعلا الموضوع مهم جدا لي
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم  ،،

بالنسبه للكود و عند قرائتي له  ، أول خطأ يسبب ببطأ الاكواد  التعامل المباشر مع الواجهه  بداخل Loop  و  ما اقصده  هو هذه الجزئيه

  Label5.Text = Val(Label5.Text) + 1

الاحرى أن تضعه  في متغير  رقمي  و في نهاية الكود يعرض الناتج  في التكس بوك ، و لكن اثناء  Loop  لا افضل ذلك و بامكانك  تجربة ذلك  و حساب الوقت  الذي سيتغرقه التعامل مع الواجهه مباشره بداخل Loop  (تجربه شخصيه) خصوصاً اذا كانت  مواصفات الجهاز  قديمه

ثانياً  لماذا تكرار تعريف جملة الاستعلام بهذا الشكل

     cmd.Parameters.AddWithValue("@LON", colLON.Trim())

غير منطقي تماماً  ،،  يمكنك ببساطه كتابته كالتالي  :  


       Dim cmd As New SqlCommand(String.Format("INSERT INTO DB{0} (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)", strcallbk), con)
       cmd.Parameters.Add("@CALLop")
       cmd.Parameters.Add("@qso_date")
       cmd.Parameters.Add("@timek")
       cmd.Parameters.Add("@bands")
       cmd.Parameters.Add("@modes")


       ' Start Loop
       cmd.Parameters("@CALLop").Value = colcall.Trim()
       cmd.Parameters("@qso_date").Value = bkd.Trim()
       cmd.Parameters("@timek").Value = timek.Trim()
       cmd.Parameters("@bands").Value = colbands.Trim()
       cmd.Parameters("@modes").Value = colmodes.Trim()
       cmd.ExecuteNonQuery()
       ' End Loop

بحيث تعرف الاستعلام مره فقط في بداية الكود  و يبقى فقط  ترسل القيم و تسوي Insert  

ثالثاً ربما انت قمت بوضع  try  ويحدث خطأ بمعالجة البيانات  و في كل مره يحدث خطأ يستنزف وقت التنفيذ  ، لذلك وجب عليك الغاء اي تصيد للاخطأ و محاول تصحيح اي بيانات تسبب مشكلة  .

رابعاً : البيانات التي تقوم بجلبها كنص ،  يعني  40000 سجل ليست بالامر الهين خصوصا اذا كان مواصفات جهازك قديمه  قد تسبب نوعاً من  كرش  عند جلبها دفعه واحده في الذاكرة

بالنسبه للكود الذي قمت  بارساله  وهي  ميزه  الغاء اجراءات التي حدثت داخل transaction   واحد  ، بمعنى لو حصل خطأ في اضافة البيانات  و هذه البيانات تعتمد  عليها بيانات  قبلها  فانه بامكانك هنا من خلال هذه الخاصيه  التراجع  عن الكل  الاضافة السابقه  ، قمت بشرحه بشكل مبسط في هذا الموضوع سابقاً

http://vb4arb.com/vb/showthread.php?tid=17881

و لكنه خلال كلماته  يذكر بان البيانات  تبقى معلقه بحيث لا تضاف الى قاعدة البيانات  مباشره  لذلك تعتبر اسرع بحيث انه يقوم باضافة جميع البيانات  ثم يعمل Commit و هي تأكيد بالتنفيذ  و الاعتماد بقاعدة البيانات  ، اعتقد انها ربما تكون منطقيه  ، بامكانك تجربته  ، وهذا هو الكود بعد تحويله  

' Creates new sqlite database if it is not found
Using conn = New SQLiteConnection("Data Source=C:\Projects\sqlite\test.sqlite")
' Be sure you already created the Person Table!
conn.Open()
Using cmd = New SQLiteCommand(conn)
Using transaction = conn.BeginTransaction()
' 100,000 inserts
For i As var = 0 To 999999
cmd.CommandText = "INSERT INTO Person (FirstName, LastName) VALUES ('John', 'Doe');"
cmd.ExecuteNonQuery()
Next
transaction.Commit()
End Using
End Using
conn.Close()
End Using


أيضا اود ان تختصر  قليلاً بالكود فلماذا تستعلم  اذا كان موجود  أو لا  ثم ترسل استعلام جديد يضيف البيانات  ، فانا لا اعلم  ان  كانت  SQLite تدعم  او لا ، لكن لا مانع ان تقرأ هذا الموضوع  

http://vb4arb.com/vb/showthread.php?tid=14259
اسم معرفي : محمد يحيى
الرد }}}
تم الشكر بواسطة: dubai.eig , abdualla , sendbad100
#3
(28-03-17, 10:23 AM)myalsailamy كتب : السلام عليكم  ،،

بالنسبه للكود و عند قرائتي له  ، أول خطأ يسبب ببطأ الاكواد  التعامل المباشر مع الواجهه  بداخل Loop  و  ما اقصده  هو هذه الجزئيه

  Label5.Text = Val(Label5.Text) + 1

الاحرى أن تضعه  في متغير  رقمي  و في نهاية الكود يعرض الناتج  في التكس بوك ، و لكن اثناء  Loop  لا افضل ذلك و بامكانك  تجربة ذلك  و حساب الوقت  الذي سيتغرقه التعامل مع الواجهه مباشره بداخل Loop  (تجربه شخصيه) خصوصاً اذا كانت  مواصفات الجهاز  قديمه

ثانياً  لماذا تكرار تعريف جملة الاستعلام بهذا الشكل

     cmd.Parameters.AddWithValue("@LON", colLON.Trim())

غير منطقي تماماً  ،،  يمكنك ببساطه كتابته كالتالي  :  


       Dim cmd As New SqlCommand(String.Format("INSERT INTO DB{0} (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)", strcallbk), con)
       cmd.Parameters.Add("@CALLop")
       cmd.Parameters.Add("@qso_date")
       cmd.Parameters.Add("@timek")
       cmd.Parameters.Add("@bands")
       cmd.Parameters.Add("@modes")


       ' Start Loop
       cmd.Parameters("@CALLop").Value = colcall.Trim()
       cmd.Parameters("@qso_date").Value = bkd.Trim()
       cmd.Parameters("@timek").Value = timek.Trim()
       cmd.Parameters("@bands").Value = colbands.Trim()
       cmd.Parameters("@modes").Value = colmodes.Trim()
       cmd.ExecuteNonQuery()
       ' End Loop

بحيث تعرف الاستعلام مره فقط في بداية الكود  و يبقى فقط  ترسل القيم و تسوي Insert  

ثالثاً ربما انت قمت بوضع  try  ويحدث خطأ بمعالجة البيانات  و في كل مره يحدث خطأ يستنزف وقت التنفيذ  ، لذلك وجب عليك الغاء اي تصيد للاخطأ و محاول تصحيح اي بيانات تسبب مشكلة  .

رابعاً : البيانات التي تقوم بجلبها كنص ،  يعني  40000 سجل ليست بالامر الهين خصوصا اذا كان مواصفات جهازك قديمه  قد تسبب نوعاً من  كرش  عند جلبها دفعه واحده في الذاكرة

بالنسبه للكود الذي قمت  بارساله  وهي  ميزه  الغاء اجراءات التي حدثت داخل transaction   واحد  ، بمعنى لو حصل خطأ في اضافة البيانات  و هذه البيانات تعتمد  عليها بيانات  قبلها  فانه بامكانك هنا من خلال هذه الخاصيه  التراجع  عن الكل  الاضافة السابقه  ، قمت بشرحه بشكل مبسط في هذا الموضوع سابقاً

http://vb4arb.com/vb/showthread.php?tid=17881

و لكنه خلال كلماته  يذكر بان البيانات  تبقى معلقه بحيث لا تضاف الى قاعدة البيانات  مباشره  لذلك تعتبر اسرع بحيث انه يقوم باضافة جميع البيانات  ثم يعمل Commit و هي تأكيد بالتنفيذ  و الاعتماد بقاعدة البيانات  ، اعتقد انها ربما تكون منطقيه  ، بامكانك تجربته  ، وهذا هو الكود بعد تحويله  

' Creates new sqlite database if it is not found
Using conn = New SQLiteConnection("Data Source=C:\Projects\sqlite\test.sqlite")
' Be sure you already created the Person Table!
conn.Open()
Using cmd = New SQLiteCommand(conn)
Using transaction = conn.BeginTransaction()
' 100,000 inserts
For i As var = 0 To 999999
cmd.CommandText = "INSERT INTO Person (FirstName, LastName) VALUES ('John', 'Doe');"
cmd.ExecuteNonQuery()
Next
transaction.Commit()
End Using
End Using
conn.Close()
End Using


أيضا اود ان تختصر  قليلاً بالكود فلماذا تستعلم  اذا كان موجود  أو لا  ثم ترسل استعلام جديد يضيف البيانات  ، فانا لا اعلم  ان  كانت  SQLite تدعم  او لا ، لكن لا مانع ان تقرأ هذا الموضوع  

http://vb4arb.com/vb/showthread.php?tid=14259



ما شاءالله عليك

شكرا على الرد

حاولت اجرب المثال اللي كتبته 

كود :
   Using conn As New SQLiteConnection("Data Source= " & System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\BKHAMLOG\DB" & strcallbk & ".s3db")
           Using cmdi As SQLiteCommand = conn.CreateCommand()

               cmdi.CommandText = "SELECT COUNT(*) FROM DB" & strcallbk & " WHERE CALLop = @CALLop  and   DateNumber = @DateNumber  and  time_on = @time_on"

               cmdi.Parameters.AddWithValue("@CALLop", colcall.Trim())
               cmdi.Parameters.AddWithValue("@DateNumber", qso_date.Trim())
               cmdi.Parameters.AddWithValue("@time_on", coltimex.Trim())
               conn.Open()
               Dim exists As String = cmdi.ExecuteScalar().ToString()

               If exists = "1" Then


               Else
                   Dim cmd As New SQLiteCommand(String.Format("INSERT INTO DB{0} (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)", strcallbk), conn)

                   cmd.Parameters.Add("@CALLop")
                   cmd.Parameters.Add("@qso_date")
                   cmd.Parameters.Add("@timek")
                   cmd.Parameters.Add("@bands")
                   cmd.Parameters.Add("@modes")
                   cmd.Parameters.Add("@Lfullname")
                   cmd.Parameters.Add("@station_callsign")
                   cmd.Parameters.Add("@dxcc")
                   cmd.Parameters.Add("@cqz")
                   cmd.Parameters.Add("@ituz")
                   cmd.Parameters.Add("@rst_sent")
                   cmd.Parameters.Add("@rst_rcvd")
                   cmd.Parameters.Add("@lotw_qsl_sent")
                   cmd.Parameters.Add("@lotw_qsl_rcvd")
                   cmd.Parameters.Add("@eqsl_qsl_sent")
                   cmd.Parameters.Add("@eqsl_qsl_rcvd")
                   cmd.Parameters.Add("@qsl_sent")
                   cmd.Parameters.Add("@qsl_rcvd")
                   cmd.Parameters.Add("@qsl_sent_date")
                   cmd.Parameters.Add("@qsl_print")
                   cmd.Parameters.Add("@country")
                   cmd.Parameters.Add("@qth")
                   cmd.Parameters.Add("@LAT")
                   cmd.Parameters.Add("@LON")
                   cmd.Parameters.Add("@GRIDSQUARE")
                   cmd.Parameters.Add("@Lqslmgr")
                   cmd.Parameters.Add("@PFX")
                   cmd.Parameters.Add("@freq")
                   cmd.Parameters.Add("@DateNumber")
                   cmd.Parameters.Add("@iota")
                   cmd.Parameters.Add("@bk_qsl_sent")
                   cmd.Parameters.Add("@time_on")
                   cmd.Parameters.Add("@state")
                   cmd.Parameters.Add("@operato")
                   cmd.Parameters.Add("@nameop")
                   cmd.Parameters.Add("@Continent")

                   cmd.Parameters.Add("@clublog_qsl_sent")
                   cmd.Parameters.Add("@hamqth_qsl_sent")


                   ' Start Loop

                   cmd.Parameters("@CALLop").Value = colcall.Trim()
                   cmd.Parameters("@qso_date").Value = bkd.Trim()
                   cmd.Parameters("@timek").Value = timek.Trim()
                   cmd.Parameters("@bands").Value = colbands.Trim()
                   cmd.Parameters("@modes").Value = colmodes.Trim()
                   cmd.Parameters("@Lfullname").Value = colLfullname.Trim()
                   cmd.Parameters("@station_callsign").Value = colstation_callsign.Trim()
                   cmd.Parameters("@dxcc").Value = coldxcc.Trim()
                   cmd.Parameters("@cqz").Value = colcqz.Trim()
                   cmd.Parameters("@ituz").Value = colituz.Trim()
                   cmd.Parameters("@rst_sent").Value = colrst_sent.Trim()
                   cmd.Parameters("@rst_rcvd").Value = colrst_rcvd.Trim()
                   cmd.Parameters("@lotw_qsl_sent").Value = qnqno
                   cmd.Parameters("@lotw_qsl_rcvd").Value = qnqno2
                   cmd.Parameters("@eqsl_qsl_sent").Value = qnqno3
                   cmd.Parameters("@eqsl_qsl_rcvd").Value = qnqno4
                   cmd.Parameters("@qsl_sent").Value = qnqno5
                   cmd.Parameters("@qsl_rcvd").Value = qnqno6
                   cmd.Parameters("@qsl_sent_date").Value = colqsl_sent_date.Trim()
                   cmd.Parameters("@qsl_print").Value = colqsl_print.Trim()
                   cmd.Parameters("@country").Value = colcountry.Trim()
                   cmd.Parameters("@qth").Value = colqth.Trim()
                   cmd.Parameters("@LAT").Value = colLAT.Trim()
                   cmd.Parameters("@LON").Value = colLON.Trim()
                   cmd.Parameters("@GRIDSQUARE").Value = colGRIDSQUARE.Trim()
                   cmd.Parameters("@Lqslmgr").Value = colLqslmgr.Trim()
                   cmd.Parameters("@PFX").Value = colPFX.Trim()
                   cmd.Parameters("@freq").Value = colfreq.Trim()
                   cmd.Parameters("@DateNumber").Value = qso_date.Trim()
                   cmd.Parameters("@iota").Value = coliota.Trim()
                   cmd.Parameters("@bk_qsl_sent").Value = bk_qsl_sent.Trim()
                   cmd.Parameters("@time_on").Value = coltime_on.Trim()
                   cmd.Parameters("@state").Value = state.Trim()
                   cmd.Parameters("@operato").Value = operato.Trim()
                   cmd.Parameters("@nameop").Value = nameop.Trim()
                   cmd.Parameters("@Continent").Value = Continent.Trim()

                   cmd.Parameters("@clublog_qsl_sent").Value = clublog_qsl_sent.Trim()
                   cmd.Parameters("@hamqth_qsl_sent").Value = hamqth_qsl_sent.Trim()
                   cmd.ExecuteNonQuery()
                   ' End Loop


                   ' End Loop
                   cmd.Dispose()




               End If

           End Using
       End Using


كود :
          Dim cmd As New SQLiteCommand(String.Format("INSERT INTO DB{0} (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)", strcallbk), conn)

                   cmd.Parameters.Add("@CALLop")
                   cmd.Parameters.Add("@qso_date")
                   cmd.Parameters.Add("@timek")
                   cmd.Parameters.Add("@bands")
                   cmd.Parameters.Add("@modes")
                   cmd.Parameters.Add("@Lfullname")
                   cmd.Parameters.Add("@station_callsign")
                   cmd.Parameters.Add("@dxcc")
                   cmd.Parameters.Add("@cqz")
                   cmd.Parameters.Add("@ituz")
                   cmd.Parameters.Add("@rst_sent")
                   cmd.Parameters.Add("@rst_rcvd")
                   cmd.Parameters.Add("@lotw_qsl_sent")
                   cmd.Parameters.Add("@lotw_qsl_rcvd")
                   cmd.Parameters.Add("@eqsl_qsl_sent")
                   cmd.Parameters.Add("@eqsl_qsl_rcvd")
                   cmd.Parameters.Add("@qsl_sent")
                   cmd.Parameters.Add("@qsl_rcvd")
                   cmd.Parameters.Add("@qsl_sent_date")
                   cmd.Parameters.Add("@qsl_print")
                   cmd.Parameters.Add("@country")
                   cmd.Parameters.Add("@qth")
                   cmd.Parameters.Add("@LAT")
                   cmd.Parameters.Add("@LON")
                   cmd.Parameters.Add("@GRIDSQUARE")
                   cmd.Parameters.Add("@Lqslmgr")
                   cmd.Parameters.Add("@PFX")
                   cmd.Parameters.Add("@freq")
                   cmd.Parameters.Add("@DateNumber")
                   cmd.Parameters.Add("@iota")
                   cmd.Parameters.Add("@bk_qsl_sent")
                   cmd.Parameters.Add("@time_on")
                   cmd.Parameters.Add("@state")
                   cmd.Parameters.Add("@operato")
                   cmd.Parameters.Add("@nameop")
                   cmd.Parameters.Add("@Continent")

                   cmd.Parameters.Add("@clublog_qsl_sent")
                   cmd.Parameters.Add("@hamqth_qsl_sent")


                   ' Start Loop

                   cmd.Parameters("@CALLop").Value = colcall.Trim()
                   cmd.Parameters("@qso_date").Value = bkd.Trim()
                   cmd.Parameters("@timek").Value = timek.Trim()
                   cmd.Parameters("@bands").Value = colbands.Trim()
                   cmd.Parameters("@modes").Value = colmodes.Trim()
                   cmd.Parameters("@Lfullname").Value = colLfullname.Trim()
                   cmd.Parameters("@station_callsign").Value = colstation_callsign.Trim()
                   cmd.Parameters("@dxcc").Value = coldxcc.Trim()
                   cmd.Parameters("@cqz").Value = colcqz.Trim()
                   cmd.Parameters("@ituz").Value = colituz.Trim()
                   cmd.Parameters("@rst_sent").Value = colrst_sent.Trim()
                   cmd.Parameters("@rst_rcvd").Value = colrst_rcvd.Trim()
                   cmd.Parameters("@lotw_qsl_sent").Value = qnqno
                   cmd.Parameters("@lotw_qsl_rcvd").Value = qnqno2
                   cmd.Parameters("@eqsl_qsl_sent").Value = qnqno3
                   cmd.Parameters("@eqsl_qsl_rcvd").Value = qnqno4
                   cmd.Parameters("@qsl_sent").Value = qnqno5
                   cmd.Parameters("@qsl_rcvd").Value = qnqno6
                   cmd.Parameters("@qsl_sent_date").Value = colqsl_sent_date.Trim()
                   cmd.Parameters("@qsl_print").Value = colqsl_print.Trim()
                   cmd.Parameters("@country").Value = colcountry.Trim()
                   cmd.Parameters("@qth").Value = colqth.Trim()
                   cmd.Parameters("@LAT").Value = colLAT.Trim()
                   cmd.Parameters("@LON").Value = colLON.Trim()
                   cmd.Parameters("@GRIDSQUARE").Value = colGRIDSQUARE.Trim()
                   cmd.Parameters("@Lqslmgr").Value = colLqslmgr.Trim()
                   cmd.Parameters("@PFX").Value = colPFX.Trim()
                   cmd.Parameters("@freq").Value = colfreq.Trim()
                   cmd.Parameters("@DateNumber").Value = qso_date.Trim()
                   cmd.Parameters("@iota").Value = coliota.Trim()
                   cmd.Parameters("@bk_qsl_sent").Value = bk_qsl_sent.Trim()
                   cmd.Parameters("@time_on").Value = coltime_on.Trim()
                   cmd.Parameters("@state").Value = state.Trim()
                   cmd.Parameters("@operato").Value = operato.Trim()
                   cmd.Parameters("@nameop").Value = nameop.Trim()
                   cmd.Parameters("@Continent").Value = Continent.Trim()

                   cmd.Parameters("@clublog_qsl_sent").Value = clublog_qsl_sent.Trim()
                   cmd.Parameters("@hamqth_qsl_sent").Value = hamqth_qsl_sent.Trim()
                   cmd.ExecuteNonQuery()
                   ' End Loop


بس عند التجربة طلع لي غلط

إقتباس :Unable to cast object of type 'System.String' to type 'System.Data.SQLite.SQLiteParameter'.

   


واما بخصوص 
إقتباس :أيضا اود ان تختصر  قليلاً بالكود فلماذا تستعلم  اذا كان موجود  أو لا  ثم ترسل استعلام جديد يضيف البيانات  ، فانا لا اعلم  ان  كانت  SQLite تدعم  او لا ، لكن لا مانع ان تقرأ هذا الموضوع  

http://vb4arb.com/vb/showthread.php?tid=14259


الظاهر SQLite  لا يدعمه 

بارك الله فيك وكثر من امثالك

قبل التغيير جربة انز 1000 سجل ونزل في خمس الى ست دقائق

ومع التغيير  

كود :
     Using conn As New SQLiteConnection("Data Source= " & System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\BKHAMLOG\DB" & strcallbk & ".s3db")
           Using cmdi As SQLiteCommand = conn.CreateCommand()

               cmdi.CommandText = "SELECT COUNT(*) FROM DB" & strcallbk & " WHERE CALLop = @CALLop  and   DateNumber = @DateNumber  and  time_on = @time_on"

               cmdi.Parameters.AddWithValue("@CALLop", colcall.Trim())
               cmdi.Parameters.AddWithValue("@DateNumber", qso_date.Trim())
               cmdi.Parameters.AddWithValue("@time_on", coltimex.Trim())
               conn.Open()
               Dim exists As String = cmdi.ExecuteScalar().ToString()

               If exists = "1" Then


               Else
                   Dim cmd As New SQLiteCommand(String.Format("INSERT INTO DB{0} (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)", strcallbk), conn)
                   cmd.Parameters.Add("@CALLop", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qso_date", SqlDbType.VarChar)
                   cmd.Parameters.Add("@timek", SqlDbType.VarChar)
                   cmd.Parameters.Add("@bands", SqlDbType.VarChar)
                   cmd.Parameters.Add("@modes", SqlDbType.VarChar)
                   cmd.Parameters.Add("@Lfullname", SqlDbType.VarChar)
                   cmd.Parameters.Add("@station_callsign", SqlDbType.VarChar)
                   cmd.Parameters.Add("@dxcc", SqlDbType.VarChar)
                   cmd.Parameters.Add("@cqz", SqlDbType.VarChar)
                   cmd.Parameters.Add("@ituz", SqlDbType.VarChar)
                   cmd.Parameters.Add("@rst_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@rst_rcvd", SqlDbType.VarChar)
                   cmd.Parameters.Add("@lotw_qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@lotw_qsl_rcvd", SqlDbType.VarChar)
                   cmd.Parameters.Add("@eqsl_qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@eqsl_qsl_rcvd", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qsl_rcvd", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qsl_sent_date", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qsl_print", SqlDbType.VarChar)
                   cmd.Parameters.Add("@country", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qth", SqlDbType.VarChar)
                   cmd.Parameters.Add("@LAT", SqlDbType.VarChar)
                   cmd.Parameters.Add("@LON", SqlDbType.VarChar)
                   cmd.Parameters.Add("@GRIDSQUARE", SqlDbType.VarChar)
                   cmd.Parameters.Add("@Lqslmgr", SqlDbType.VarChar)
                   cmd.Parameters.Add("@PFX", SqlDbType.VarChar)
                   cmd.Parameters.Add("@freq", SqlDbType.VarChar)
                   cmd.Parameters.Add("@DateNumber", SqlDbType.VarChar)
                   cmd.Parameters.Add("@iota", SqlDbType.VarChar)
                   cmd.Parameters.Add("@bk_qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@time_on", SqlDbType.VarChar)
                   cmd.Parameters.Add("@state", SqlDbType.VarChar)
                   cmd.Parameters.Add("@operato", SqlDbType.VarChar)
                   cmd.Parameters.Add("@nameop", SqlDbType.VarChar)
                   cmd.Parameters.Add("@Continent", SqlDbType.VarChar)

                   cmd.Parameters.Add("@clublog_qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@hamqth_qsl_sent", SqlDbType.VarChar)



                   ' Start Loop



                   cmd.Parameters("@CALLop").Value = colcall.Trim()
                   cmd.Parameters("@qso_date").Value = bkd.Trim()
                   cmd.Parameters("@timek").Value = timek.Trim()
                   cmd.Parameters("@bands").Value = colbands.Trim()
                   cmd.Parameters("@modes").Value = colmodes.Trim()
                   cmd.Parameters("@Lfullname").Value = colLfullname.Trim()
                   cmd.Parameters("@station_callsign").Value = colstation_callsign.Trim()
                   cmd.Parameters("@dxcc").Value = coldxcc.Trim()
                   cmd.Parameters("@cqz").Value = colcqz.Trim()
                   cmd.Parameters("@ituz").Value = colituz.Trim()
                   cmd.Parameters("@rst_sent").Value = colrst_sent.Trim()
                   cmd.Parameters("@rst_rcvd").Value = colrst_rcvd.Trim()
                   cmd.Parameters("@lotw_qsl_sent").Value = qnqno
                   cmd.Parameters("@lotw_qsl_rcvd").Value = qnqno2
                   cmd.Parameters("@eqsl_qsl_sent").Value = qnqno3
                   cmd.Parameters("@eqsl_qsl_rcvd").Value = qnqno4
                   cmd.Parameters("@qsl_sent").Value = qnqno5
                   cmd.Parameters("@qsl_rcvd").Value = qnqno6
                   cmd.Parameters("@qsl_sent_date").Value = colqsl_sent_date.Trim()
                   cmd.Parameters("@qsl_print").Value = colqsl_print.Trim()
                   cmd.Parameters("@country").Value = colcountry.Trim()
                   cmd.Parameters("@qth").Value = colqth.Trim()
                   cmd.Parameters("@LAT").Value = colLAT.Trim()
                   cmd.Parameters("@LON").Value = colLON.Trim()
                   cmd.Parameters("@GRIDSQUARE").Value = colGRIDSQUARE.Trim()
                   cmd.Parameters("@Lqslmgr").Value = colLqslmgr.Trim()
                   cmd.Parameters("@PFX").Value = colPFX.Trim()
                   cmd.Parameters("@freq").Value = colfreq.Trim()
                   cmd.Parameters("@DateNumber").Value = qso_date.Trim()
                   cmd.Parameters("@iota").Value = coliota.Trim()
                   cmd.Parameters("@bk_qsl_sent").Value = bk_qsl_sent.Trim()
                   cmd.Parameters("@time_on").Value = coltime_on.Trim()
                   cmd.Parameters("@state").Value = state.Trim()
                   cmd.Parameters("@operato").Value = operato.Trim()
                   cmd.Parameters("@nameop").Value = nameop.Trim()
                   cmd.Parameters("@Continent").Value = Continent.Trim()

                   cmd.Parameters("@clublog_qsl_sent").Value = clublog_qsl_sent.Trim()
                   cmd.Parameters("@hamqth_qsl_sent").Value = hamqth_qsl_sent.Trim()
                   cmd.ExecuteNonQuery()
                   ' End Loop

                   ' End Loop
                   cmd.Dispose()




               End If

           End Using
       End Using


ونزلت 1000 سجل من جديد بعد نزل في خمس الى ست دقائق


وجربت امسح الاستعلام
كود :
               cmdi.CommandText = "SELECT COUNT(*) FROM DB" & strcallbk & " WHERE CALLop = @CALLop  and   DateNumber = @DateNumber  and  time_on = @time_on"

               cmdi.Parameters.AddWithValue("@CALLop", colcall.Trim())
               cmdi.Parameters.AddWithValue("@DateNumber", qso_date.Trim())
               cmdi.Parameters.AddWithValue("@time_on", coltimex.Trim())
               conn.Open()
               Dim exists As String = cmdi.ExecuteScalar().ToString()

               If exists = "1" Then


ليكون كذا


كود :
 
       Using conn As New SQLiteConnection("Data Source= " & System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\BKHAMLOG\DB" & strcallbk & ".s3db")
           Using cmdi As SQLiteCommand = conn.CreateCommand()

               conn.Open()
                   Dim cmd As New SQLiteCommand(String.Format("INSERT INTO DB{0} (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)", strcallbk), conn)
                   cmd.Parameters.Add("@CALLop", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qso_date", SqlDbType.VarChar)
                   cmd.Parameters.Add("@timek", SqlDbType.VarChar)
                   cmd.Parameters.Add("@bands", SqlDbType.VarChar)
                   cmd.Parameters.Add("@modes", SqlDbType.VarChar)
                   cmd.Parameters.Add("@Lfullname", SqlDbType.VarChar)
                   cmd.Parameters.Add("@station_callsign", SqlDbType.VarChar)
                   cmd.Parameters.Add("@dxcc", SqlDbType.VarChar)
                   cmd.Parameters.Add("@cqz", SqlDbType.VarChar)
                   cmd.Parameters.Add("@ituz", SqlDbType.VarChar)
                   cmd.Parameters.Add("@rst_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@rst_rcvd", SqlDbType.VarChar)
                   cmd.Parameters.Add("@lotw_qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@lotw_qsl_rcvd", SqlDbType.VarChar)
                   cmd.Parameters.Add("@eqsl_qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@eqsl_qsl_rcvd", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qsl_rcvd", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qsl_sent_date", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qsl_print", SqlDbType.VarChar)
                   cmd.Parameters.Add("@country", SqlDbType.VarChar)
                   cmd.Parameters.Add("@qth", SqlDbType.VarChar)
                   cmd.Parameters.Add("@LAT", SqlDbType.VarChar)
                   cmd.Parameters.Add("@LON", SqlDbType.VarChar)
                   cmd.Parameters.Add("@GRIDSQUARE", SqlDbType.VarChar)
                   cmd.Parameters.Add("@Lqslmgr", SqlDbType.VarChar)
                   cmd.Parameters.Add("@PFX", SqlDbType.VarChar)
                   cmd.Parameters.Add("@freq", SqlDbType.VarChar)
                   cmd.Parameters.Add("@DateNumber", SqlDbType.VarChar)
                   cmd.Parameters.Add("@iota", SqlDbType.VarChar)
                   cmd.Parameters.Add("@bk_qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@time_on", SqlDbType.VarChar)
                   cmd.Parameters.Add("@state", SqlDbType.VarChar)
                   cmd.Parameters.Add("@operato", SqlDbType.VarChar)
                   cmd.Parameters.Add("@nameop", SqlDbType.VarChar)
                   cmd.Parameters.Add("@Continent", SqlDbType.VarChar)

                   cmd.Parameters.Add("@clublog_qsl_sent", SqlDbType.VarChar)
                   cmd.Parameters.Add("@hamqth_qsl_sent", SqlDbType.VarChar)



                   ' Start Loop



                   cmd.Parameters("@CALLop").Value = colcall.Trim()
                   cmd.Parameters("@qso_date").Value = bkd.Trim()
                   cmd.Parameters("@timek").Value = timek.Trim()
                   cmd.Parameters("@bands").Value = colbands.Trim()
                   cmd.Parameters("@modes").Value = colmodes.Trim()
                   cmd.Parameters("@Lfullname").Value = colLfullname.Trim()
                   cmd.Parameters("@station_callsign").Value = colstation_callsign.Trim()
                   cmd.Parameters("@dxcc").Value = coldxcc.Trim()
                   cmd.Parameters("@cqz").Value = colcqz.Trim()
                   cmd.Parameters("@ituz").Value = colituz.Trim()
                   cmd.Parameters("@rst_sent").Value = colrst_sent.Trim()
                   cmd.Parameters("@rst_rcvd").Value = colrst_rcvd.Trim()
                   cmd.Parameters("@lotw_qsl_sent").Value = qnqno
                   cmd.Parameters("@lotw_qsl_rcvd").Value = qnqno2
                   cmd.Parameters("@eqsl_qsl_sent").Value = qnqno3
                   cmd.Parameters("@eqsl_qsl_rcvd").Value = qnqno4
                   cmd.Parameters("@qsl_sent").Value = qnqno5
                   cmd.Parameters("@qsl_rcvd").Value = qnqno6
                   cmd.Parameters("@qsl_sent_date").Value = colqsl_sent_date.Trim()
                   cmd.Parameters("@qsl_print").Value = colqsl_print.Trim()
                   cmd.Parameters("@country").Value = colcountry.Trim()
                   cmd.Parameters("@qth").Value = colqth.Trim()
                   cmd.Parameters("@LAT").Value = colLAT.Trim()
                   cmd.Parameters("@LON").Value = colLON.Trim()
                   cmd.Parameters("@GRIDSQUARE").Value = colGRIDSQUARE.Trim()
                   cmd.Parameters("@Lqslmgr").Value = colLqslmgr.Trim()
                   cmd.Parameters("@PFX").Value = colPFX.Trim()
                   cmd.Parameters("@freq").Value = colfreq.Trim()
                   cmd.Parameters("@DateNumber").Value = qso_date.Trim()
                   cmd.Parameters("@iota").Value = coliota.Trim()
                   cmd.Parameters("@bk_qsl_sent").Value = bk_qsl_sent.Trim()
                   cmd.Parameters("@time_on").Value = coltime_on.Trim()
                   cmd.Parameters("@state").Value = state.Trim()
                   cmd.Parameters("@operato").Value = operato.Trim()
                   cmd.Parameters("@nameop").Value = nameop.Trim()
                   cmd.Parameters("@Continent").Value = Continent.Trim()

                   cmd.Parameters("@clublog_qsl_sent").Value = clublog_qsl_sent.Trim()
                   cmd.Parameters("@hamqth_qsl_sent").Value = hamqth_qsl_sent.Trim()
                   cmd.ExecuteNonQuery()
                   ' End Loop

                   ' End Loop
                   cmd.Dispose()





           End Using
       End Using


ونزلت 1000 سجل كمان نفس الوقت تقريبا 5 الى ست دقائق
الرد }}}
تم الشكر بواسطة:
#4
أخي جرب الطريقة التالية
PHP كود :
   Private cmd As New SQLiteCommand(String.Empty, con)

 
   Sub INSERT()

 
       cmd.CommandText "SELECT COUNT(CALLop) FROM DB" strcallbk " WHERE (CALLop = @CALLop) AND (DateNumber = @DateNumber) AND (time_on = @time_on)"
 
       cmd.Parameters.Clear()
 
       cmd.Parameters.AddWithValue("@CALLop"colcall.Trim())
 
       cmd.Parameters.AddWithValue("@DateNumber"qso_date.Trim())
 
       cmd.Parameters.AddWithValue("@time_on"coltimex.Trim())

 
       If cmd.ExecuteScalar 0 Then
            cmd
.CommandText "INSERT INTO DB" strcallbk " (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)"
 
           cmd.Parameters.Clear()
 
           cmd.Parameters.AddWithValue("@CALLop"colcall.Trim())
 
           cmd.Parameters.AddWithValue("@qso_date"bkd.Trim())
 
           cmd.Parameters.AddWithValue("@timek"timek.Trim())
 
           cmd.Parameters.AddWithValue("@bands"colbands.Trim())
 
           cmd.Parameters.AddWithValue("@modes"colmodes.Trim())
 
           cmd.Parameters.AddWithValue("@Lfullname"colLfullname.Trim())
 
           cmd.Parameters.AddWithValue("@station_callsign"colstation_callsign.Trim())
 
           cmd.Parameters.AddWithValue("@dxcc"coldxcc.Trim())
 
           cmd.Parameters.AddWithValue("@cqz"colcqz.Trim())
 
           cmd.Parameters.AddWithValue("@ituz"colituz.Trim())
 
           cmd.Parameters.AddWithValue("@rst_sent"colrst_sent.Trim())
 
           cmd.Parameters.AddWithValue("@rst_rcvd"colrst_rcvd.Trim())
 
           cmd.Parameters.AddWithValue("@lotw_qsl_sent"collotw_qsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@lotw_qsl_rcvd"collotw_qsl_rcvd.Trim())
 
           cmd.Parameters.AddWithValue("@eqsl_qsl_sent"coleqsl_qsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@eqsl_qsl_rcvd"coleqsl_qsl_rcvd.Trim())
 
           cmd.Parameters.AddWithValue("@qsl_sent"colqsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@qsl_rcvd"colqsl_rcvd.Trim())
 
           cmd.Parameters.AddWithValue("@qsl_sent_date"colqsl_sent_date.Trim())
 
           cmd.Parameters.AddWithValue("@qsl_print"colqsl_print.Trim())
 
           cmd.Parameters.AddWithValue("@country"colcountry.Trim())
 
           cmd.Parameters.AddWithValue("@qth"colqth.Trim())
 
           cmd.Parameters.AddWithValue("@LAT"colLAT.Trim())
 
           cmd.Parameters.AddWithValue("@LON"colLON.Trim())
 
           cmd.Parameters.AddWithValue("@GRIDSQUARE"colGRIDSQUARE.Trim())
 
           cmd.Parameters.AddWithValue("@Lqslmgr"colLqslmgr.Trim())
 
           cmd.Parameters.AddWithValue("@PFX"colPFX.Trim())
 
           cmd.Parameters.AddWithValue("@freq"colfreq.Trim())
 
           cmd.Parameters.AddWithValue("@DateNumber"qso_date.Trim())
 
           cmd.Parameters.AddWithValue("@iota"coliota.Trim())
 
           cmd.Parameters.AddWithValue("@bk_qsl_sent"bk_qsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@time_on"coltime_on.Trim())
 
           cmd.Parameters.AddWithValue("@state"state.Trim())
 
           cmd.Parameters.AddWithValue("@operato"operato.Trim())
 
           cmd.Parameters.AddWithValue("@nameop"nameop.Trim())
 
           cmd.Parameters.AddWithValue("@Continent"Continent.Trim())
 
           cmd.Parameters.AddWithValue("@clublog_qsl_sent"clublog_qsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@hamqth_qsl_sent"hamqth_qsl_sent.Trim())

 
           cmd.ExecuteNonQuery()


 
           Label1.Text Val(Label1.Text) + 1
        Else

            Label5
.Text Val(Label5.Text) + 1

        End 
If
 
   End Sub 

كما تلاحظ تم التعريف عن cmd مرة واحدة للإستعلامين في الفورم مع عدم استخدام Dispose طبعا

لكن لو وضعت المشروع قد أجد طريقة أسهل وأسرع
الرد }}}
تم الشكر بواسطة: sendbad100 , dubai.eig , dubai.eig
#5
(28-03-17, 01:35 PM)abdualla كتب : أخي جرب الطريقة التالية
PHP كود :
   Private cmd As New SQLiteCommand(String.Empty, con)

 
   Sub INSERT()

 
       cmd.CommandText "SELECT COUNT(CALLop) FROM DB" strcallbk " WHERE (CALLop = @CALLop) AND (DateNumber = @DateNumber) AND (time_on = @time_on)"
 
       cmd.Parameters.Clear()
 
       cmd.Parameters.AddWithValue("@CALLop"colcall.Trim())
 
       cmd.Parameters.AddWithValue("@DateNumber"qso_date.Trim())
 
       cmd.Parameters.AddWithValue("@time_on"coltimex.Trim())

 
       If cmd.ExecuteScalar 0 Then
            cmd
.CommandText "INSERT INTO DB" strcallbk " (CALLop,qso_date,timek,bands,modes,Lfullname,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,lotw_qsl_sent,lotw_qsl_rcvd,eqsl_qsl_sent,eqsl_qsl_rcvd,qsl_sent,qsl_rcvd,qsl_sent_date,qsl_print,country,qth,LAT,LON,GRIDSQUARE,Lqslmgr,PFX,freq,DateNumber,iota,bk_qsl_sent,time_on,state,operato,nameop,Continent,hamqth_qsl_sent,clublog_qsl_sent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@Lfullname,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@lotw_qsl_sent,@lotw_qsl_rcvd,@eqsl_qsl_sent,@eqsl_qsl_rcvd,@qsl_sent,@qsl_rcvd,@qsl_sent_date,@qsl_print,@country,@qth,@LAT,@LON,@GRIDSQUARE,@Lqslmgr,@PFX,@freq,@DateNumber,@iota,@bk_qsl_sent,@time_on,@state,@operato,@nameop,@Continent,@hamqth_qsl_sent,@clublog_qsl_sent)"
 
           cmd.Parameters.Clear()
 
           cmd.Parameters.AddWithValue("@CALLop"colcall.Trim())
 
           cmd.Parameters.AddWithValue("@qso_date"bkd.Trim())
 
           cmd.Parameters.AddWithValue("@timek"timek.Trim())
 
           cmd.Parameters.AddWithValue("@bands"colbands.Trim())
 
           cmd.Parameters.AddWithValue("@modes"colmodes.Trim())
 
           cmd.Parameters.AddWithValue("@Lfullname"colLfullname.Trim())
 
           cmd.Parameters.AddWithValue("@station_callsign"colstation_callsign.Trim())
 
           cmd.Parameters.AddWithValue("@dxcc"coldxcc.Trim())
 
           cmd.Parameters.AddWithValue("@cqz"colcqz.Trim())
 
           cmd.Parameters.AddWithValue("@ituz"colituz.Trim())
 
           cmd.Parameters.AddWithValue("@rst_sent"colrst_sent.Trim())
 
           cmd.Parameters.AddWithValue("@rst_rcvd"colrst_rcvd.Trim())
 
           cmd.Parameters.AddWithValue("@lotw_qsl_sent"collotw_qsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@lotw_qsl_rcvd"collotw_qsl_rcvd.Trim())
 
           cmd.Parameters.AddWithValue("@eqsl_qsl_sent"coleqsl_qsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@eqsl_qsl_rcvd"coleqsl_qsl_rcvd.Trim())
 
           cmd.Parameters.AddWithValue("@qsl_sent"colqsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@qsl_rcvd"colqsl_rcvd.Trim())
 
           cmd.Parameters.AddWithValue("@qsl_sent_date"colqsl_sent_date.Trim())
 
           cmd.Parameters.AddWithValue("@qsl_print"colqsl_print.Trim())
 
           cmd.Parameters.AddWithValue("@country"colcountry.Trim())
 
           cmd.Parameters.AddWithValue("@qth"colqth.Trim())
 
           cmd.Parameters.AddWithValue("@LAT"colLAT.Trim())
 
           cmd.Parameters.AddWithValue("@LON"colLON.Trim())
 
           cmd.Parameters.AddWithValue("@GRIDSQUARE"colGRIDSQUARE.Trim())
 
           cmd.Parameters.AddWithValue("@Lqslmgr"colLqslmgr.Trim())
 
           cmd.Parameters.AddWithValue("@PFX"colPFX.Trim())
 
           cmd.Parameters.AddWithValue("@freq"colfreq.Trim())
 
           cmd.Parameters.AddWithValue("@DateNumber"qso_date.Trim())
 
           cmd.Parameters.AddWithValue("@iota"coliota.Trim())
 
           cmd.Parameters.AddWithValue("@bk_qsl_sent"bk_qsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@time_on"coltime_on.Trim())
 
           cmd.Parameters.AddWithValue("@state"state.Trim())
 
           cmd.Parameters.AddWithValue("@operato"operato.Trim())
 
           cmd.Parameters.AddWithValue("@nameop"nameop.Trim())
 
           cmd.Parameters.AddWithValue("@Continent"Continent.Trim())
 
           cmd.Parameters.AddWithValue("@clublog_qsl_sent"clublog_qsl_sent.Trim())
 
           cmd.Parameters.AddWithValue("@hamqth_qsl_sent"hamqth_qsl_sent.Trim())

 
           cmd.ExecuteNonQuery()


 
           Label1.Text Val(Label1.Text) + 1
        Else

            Label5
.Text Val(Label5.Text) + 1

        End 
If
 
   End Sub 

كما تلاحظ تم التعريف عن cmd مرة واحدة للإستعلامين في الفورم مع عدم استخدام Dispose طبعا

لكن لو وضعت المشروع قد أجد طريقة أسهل وأسرع


بارك الله فيك

هذا المشروع 
المشروع

للعلم يوجد في فولدر

DemoLog\bin\Debug

ملف اسمه
TEST.ADI

هو اللي انزله اللي في الداتا

وفي نفس الفوولدر قاعدة البيانات
DBA61KM.s3db

واسمحلي تعبتك وفي ميزان اعمالك
الرد }}}
تم الشكر بواسطة:
#6
السلام عليكم

رابط المشروع خطأ، تأكد منه!

والأفضل أن تضعه في المرفقات.
الرد }}}
تم الشكر بواسطة: Amir_Alzubidy , dubai.eig
#7
(28-03-17, 09:01 PM)مساعدة كتب : السلام عليكم

رابط المشروع خطأ، تأكد منه!

والأفضل أن تضعه في المرفقات.

فعلا كان خطا

تفضل

http://bkqslmanager.com/28-03.zip
الرد }}}
تم الشكر بواسطة:
#8
المشروع لم يعمل لدي لاختلاف الاصدار،

ولكن بالاطلاع على كود الفورم وجدت استخدام Timer وفي ملف Designer الخاص بالفورم وجدت أنه ضبط Interval على 50

جرب تضع Interval الخاص بالتايمر على 1

إلى حين اتمكن من تشغيل المشروع بطريقة ما
الرد }}}
تم الشكر بواسطة: Amir_Alzubidy , Amir_Alzubidy
#9
(28-03-17, 10:19 PM)مساعدة كتب : المشروع لم يعمل لدي لاختلاف الاصدار،

ولكن بالاطلاع على كود الفورم وجدت استخدام Timer وفي ملف Designer الخاص بالفورم وجدت أنه ضبط Interval على 50

جرب تضع Interval الخاص بالتايمر على 1

إلى حين اتمكن من تشغيل المشروع بطريقة ما


هو فعلا على 1  

بس يمكن قبل ما انزل الملف قمت بتغييره الى 50

في انتظارك وشكرا
الرد }}}
تم الشكر بواسطة:
#10
ليس لدي البرنامج الخاص بفتح قواعد البيانات  SQLLite  لذلك لا اعلم هل تم ادراج البيانات  بشكل صحيح  ام لا لان حجم ملف القاعدة  لا يتغير  ، على العموم عدلت بعض الاكواد و اصبح اسرع  بامكانك مراجعت الاكواد  و فهم ما قمت به  ، بالاضافة اذا ارد انت تتعامل مع اكثر من مهمه  بدون تعليق البرنامج ابحث عن جانب  Multi Thread في .Net  


فقط قم باستبدال ملف  vb هذا FormADIimport.vb بالملف الجديد  ،، لان حجم المشروع كبير كمرفق  



.rar   FormADIimport.rar (الحجم : 2.91 ك ب / التحميلات : 35)
اسم معرفي : محمد يحيى
الرد }}}
تم الشكر بواسطة: Amir_Alzubidy , dubai.eig


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سؤال عن عملية حذف سجل من قاعدة البيانات assuhimi 3 249 11-02-24, 08:43 PM
آخر رد: assuhimi
Heart [C#.NET] حول بطئ عملية نقل البينات الكثيرة من أكسس إلى داتا غريد فيو بلال بلال 11 710 15-12-23, 07:47 AM
آخر رد: foad8920
  [VB.NET] Datagridview Slow حركة بطيئة waataanys 1 294 20-11-23, 04:33 PM
آخر رد: justforit
  [VB.NET] ناتج عملية الطرح للأرقام الشعرية خطا عبدالله الصافي 3 362 27-09-23, 11:01 AM
آخر رد: قناص المدينة
  عملية حسابية خاصة محمد خيري 6 497 22-08-23, 09:09 AM
آخر رد: مصمم هاوي
  [VB.NET] ما الخطا فى كود insert Asabry 45 a 6 706 18-01-23, 08:24 PM
آخر رد: Asabry 45 a
  ماهى عملية الضرب داخل sql حماده ممدوح البحيرى 5 832 18-12-22, 01:00 PM
آخر رد: Taha Okla
  تحديد الصف بعد عملية التحديث محمد اسماعيل 4 2,981 02-10-22, 12:50 PM
آخر رد: رضوان الجماعي
Question [سؤال] تعبئة TreeView مع جود اكثر من عملية بحث ادخل جدوالين alims 1 1,869 22-05-22, 07:51 PM
آخر رد: samo123456
  [VB.NET] Bulk Insert records and Update existing rows if record exists using from datagridview failasouf 0 710 16-04-22, 05:04 PM
آخر رد: failasouf

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم