كيف يمكنني مقارنة نص في قاعدة بيانات SQLite ببعض النصوص الموجودة محليًا في ملف نصي؟

1

لدي برنامج يحصل على السجل في Google Chrome من Chrome SQLite database . إنه يعمل بشكل رائع ، والنتيجة هي:

Imagen 8023

الذي يستخدم هذا الرمز:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim google As String = (Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\Google\Chrome\User Data\Default\History")
        Dim fileName As String = DateTime.Now.Ticks.ToString
        File.Copy(google, (Application.StartupPath + ("\" + fileName)))
        Dim con As SQLiteConnection = New SQLiteConnection(("DataSource = " + (Application.StartupPath + ("\" + (fileName + ";Versio=3;New=False;Compress=True;")))))
        Dim da As SQLiteDataAdapter = New SQLiteDataAdapter("select * from urls order by last_visit_time desc", con)
        Dim ds As DataSet = New DataSet
        da.Fill(ds)
        DataGridView1.DataSource = ds.Tables(0)
        con.Close()
    End Sub

الآن ، إليك ما يسبب لي مشكلة:

كيف يمكنني مقارنة نص عنوان URL لقاعدة البيانات بملف .txt المستضاف محليًا والذي يحتوي على قائمة بمواقع الويب المدرجة في القائمة البيضاء؟

إليك ما بحثت عنه حتى الآن وهو جزء من هيكل هذا البرنامج:

Dim file As String
file = My.Computer.FileSystem.ReadAllText("websitelist.txt").ToString

If file.Contains("exampledomain.com") Then // from SQLite Database
    MessageBox.Show("A query exists in the database.")
End If

كيف يمكنني القيام بذلك ولكن العمل مع SQLite ؟

Any information you need, please, comment below.

1 إجابة

0

أضفت استخدام ... End استخدام الكتل للتأكد من إغلاق أغراضك والتخلص منها بشكل صحيح حتى إذا كان هناك خطأ. لقد استخدمت للتو DataTable و DataReader لتفتيح الأشياء قليلاً. أضف حقل عنوان url إلى قائمة (من T) ثم باستخدام استعلام Linq ، احصل على البيانات التي تتطابق. لقد طبعته للتو إلى النافذة الفورية ولكن يمكنك استخدامه بالطريقة التي تريدها.

Private Sub btnGoogleHistory_Click(sender As Object, e As EventArgs) Handles btnGoogleHistory.Click
        Dim google As String = (Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\Google\Chrome\User Data\Default\History")
        Dim fileName As String = DateTime.Now.Ticks.ToString
        File.Copy(google, (Application.StartupPath + ("\" + fileName)))
        Dim dt As New DataTable()
        Using con As SQLiteConnection = New SQLiteConnection($"DataSource = {Application.StartupPath }\{fileName};Versio=3;New=False;Compress=True;")
            Using cmd As New SQLiteCommand("select * from urls order by last_visit_time desc ", con)
                con.Open()
                Using dr As SQLiteDataReader = cmd.ExecuteReader()
                    dt.Load(dr)
                End Using
            End Using
        End Using
        DataGridView1.DataSource = dt
        Dim lstGoogleHistory As New List(Of String)
        For Each row As DataRow In dt.Rows
            lstGoogleHistory.Add(row("url").ToString)
        Next
        Dim WhiteListText As String = My.Computer.FileSystem.ReadAllText("websitelist.txt").ToString
        Dim InWhiteList = From uri In lstGoogleHistory
                          Where uri.All(Function(x) WhiteListText.Contains(uri))
                          Select uri
        For Each URL In InWhiteList
            Debug.Print(URL)
        Next
    End Sub
:مؤلف
فوق
قائمة طعام