28-03-17, 02:24 AM
اهلا بكم
انا اتعامل مع SQLite
في عملية ال INSERT
حاولت انزل 40000 سجل في قاعدة البيانات
وعند التنزيل ياخذ مني تقريبا 3 ساعات او اكثر
عملت بحث في النت واتضح لي بان هناك اكواد او طريقة كتابة الكود تساعد على تسريع التنزيل
الكود اللي اعمل عليه
هنا يتحقق من القاعد هل السجل موجود او غير موجود
اذا غير موجود يقوم بتنزيله
واذا موجود يقوم بتعدي وعدم انزاله
طبعا هنا يحسب لي عدد اللي تم انزاله وعدد اللي لم يتم انزاله
السؤال الان
هل الكود صحيح للعلم هو شغال ومافي اي مشكله
بس مشكلته البطئ في التنزيل
هل في طريقة اخرى كود اخر
من عمليات البحث حصلت هذا الموضوع والكود التالي
https://www.jokecamp.com/blog/make-your-...fast-in-c/
بس مع الاسف هو C#
وما عرفت اجربة في VB.NET
شكرا على المساعدة لان فعلا الموضوع مهم جدا لي
انا اتعامل مع 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
شكرا على المساعدة لان فعلا الموضوع مهم جدا لي