09-07-24, 04:55 PM
(09-07-24, 04:22 PM)Taha Okla كتب : ربما هذا الأمر ("VACUUM main INTO 'backup.db'") لا يعمل على قواعد البيانات القديمة قبل الاصدار الذي ينزل بـ NuGet إصدار (SQLite Core)أشتغل الكود بنجاح
على كل هناك طريقة أخرى تعمل على الاصدارات القديمة وهي :
كود :
Dim Con As New SQLiteConnection("Data Source=|DataDirectory|\testdb.db") ' الكائن الأساسي لقاعدة البيانات الحالية
Dim Con2 As New SQLiteConnection("Data Source= " & Application.StartupPath & "\backup.db") ' كائن النسخة الاحتياطية
' فتح الاتصال
If Con.State <> ConnectionState.Closed Then Con.Close()
Con.Open()
If Con2.State <> ConnectionState.Closed Then Con.Close()
Con2.Open()
' إصلاح قاعدة البيانات الاساسية من أجل ضغطها
Dim cmd As SQLiteCommand = New SQLiteCommand("VACUUM", Con)
' عمل نسخة إحتياطية
Con.BackupDatabase(Con2, "main", "main", -1, Nothing, 0)
Con2.Close()
Con.Close()
تقييم +1
كنت افكر في طريقة اخرى باستعمال الكود الاول حتى وجدتت مشاركتك
ضغط واصلاح نفس قاعدة البيانات ومن ثمة نسخ القاعدة الى مجلد آخر (Backup) باسم مغاير
