المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
اهلا بكم
انا اتعامل مع 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
شكرا على المساعدة لان فعلا الموضوع مهم جدا لي
المشاركات : 277
المواضيع 18
الإنتساب : Dec 2013
السمعة :
34
الشكر: 1057
تم شكره 2872 مرات في 215 مشاركات
28-03-17, 10:23 AM
(آخر تعديل لهذه المشاركة : 28-03-17, 11:00 AM {2} بواسطة 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
اسم معرفي : محمد يحيى
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
28-03-17, 12:37 PM
(آخر تعديل لهذه المشاركة : 28-03-17, 01:27 PM {2} بواسطة dubai.eig.)
(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 الى ست دقائق
المشاركات : 150
المواضيع 1
الإنتساب : Mar 2017
السمعة :
12
الشكر: 211
تم شكره 171 مرات في 94 مشاركات
28-03-17, 01:35 PM
(آخر تعديل لهذه المشاركة : 28-03-17, 01:38 PM {2} بواسطة 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 طبعا
لكن لو وضعت المشروع قد أجد طريقة أسهل وأسرع
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
28-03-17, 03:59 PM
(آخر تعديل لهذه المشاركة : 28-03-17, 04:01 PM {2} بواسطة dubai.eig.)
(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
واسمحلي تعبتك وفي ميزان اعمالك
المشاركات : 595
المواضيع 1
الإنتساب : Dec 2016
السمعة :
45
الشكر: 0
تم شكره 544 مرات في 355 مشاركات
السلام عليكم
رابط المشروع خطأ، تأكد منه!
والأفضل أن تضعه في المرفقات.
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
(28-03-17, 09:01 PM)مساعدة كتب : السلام عليكم
رابط المشروع خطأ، تأكد منه!
والأفضل أن تضعه في المرفقات.
فعلا كان خطا
تفضل
http://bkqslmanager.com/28-03.zip
المشاركات : 595
المواضيع 1
الإنتساب : Dec 2016
السمعة :
45
الشكر: 0
تم شكره 544 مرات في 355 مشاركات
المشروع لم يعمل لدي لاختلاف الاصدار،
ولكن بالاطلاع على كود الفورم وجدت استخدام Timer وفي ملف Designer الخاص بالفورم وجدت أنه ضبط Interval على 50
جرب تضع Interval الخاص بالتايمر على 1
إلى حين اتمكن من تشغيل المشروع بطريقة ما
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
28-03-17, 11:31 PM
(آخر تعديل لهذه المشاركة : 28-03-17, 11:36 PM {2} بواسطة dubai.eig.)
(28-03-17, 10:19 PM)مساعدة كتب : المشروع لم يعمل لدي لاختلاف الاصدار،
ولكن بالاطلاع على كود الفورم وجدت استخدام Timer وفي ملف Designer الخاص بالفورم وجدت أنه ضبط Interval على 50
جرب تضع Interval الخاص بالتايمر على 1
إلى حين اتمكن من تشغيل المشروع بطريقة ما
هو فعلا على 1
بس يمكن قبل ما انزل الملف قمت بتغييره الى 50
في انتظارك وشكرا
المشاركات : 277
المواضيع 18
الإنتساب : Dec 2013
السمعة :
34
الشكر: 1057
تم شكره 2872 مرات في 215 مشاركات
ليس لدي البرنامج الخاص بفتح قواعد البيانات SQLLite لذلك لا اعلم هل تم ادراج البيانات بشكل صحيح ام لا لان حجم ملف القاعدة لا يتغير ، على العموم عدلت بعض الاكواد و اصبح اسرع بامكانك مراجعت الاكواد و فهم ما قمت به ، بالاضافة اذا ارد انت تتعامل مع اكثر من مهمه بدون تعليق البرنامج ابحث عن جانب Multi Thread في .Net
فقط قم باستبدال ملف vb هذا FormADIimport.vb بالملف الجديد ،، لان حجم المشروع كبير كمرفق
FormADIimport.rar (الحجم : 2.91 ك ب / التحميلات : 35)
اسم معرفي : محمد يحيى
|