VB.Net SQLite Select Statement с ошибкой в ​​одинарных кавычках - PullRequest
0 голосов
/ 15 октября 2018

У меня есть таблица SQLite со столбцом, содержащим записи, в которых уже есть двойные символы в одинарных кавычках, чтобы избежать их.Пример:

MD Prince George''s

Я хочу запросить эту таблицу, чтобы узнать, смогу ли я найти вышеуказанную запись.Этот код показывает небольшую тестовую программу, которая пытается сделать это:

Private Sub TEST2_Click(sender As Object, e As EventArgs) Handles TEST2.Click
    Dim sql() As String = {"LIKE 'MD Prince George%';",
                           "= 'MD Prince George''s';",
                           "= 'MD Prince George's';"}
    Dim ThisTable As New List(Of DataRow)

    For a As Integer = 0 To sql.Count - 1
        Try
            Connect(2)  ' Getting my connection
            Using tr As SQLiteTransaction = conn.BeginTransaction
                Using cmd As New SQLiteCommand
                    cmd.Connection = conn
                    cmd.CommandType = CommandType.Text
                    cmd.CommandText = "SELECT * FROM `counties` WHERE `STATE_COUNTY` " & sql(a)
                    Using da As New SQLiteDataAdapter(cmd)
                        Dim dt As New DataTable
                        da.Fill(dt)

                        If dt.Rows.Count > 0 Then
                            ThisTable.Add(dt.Rows(0))
                        End If
                    End Using
                End Using
                tr.Commit()
            End Using
        Catch ex As Exception
            Debug.WriteLine(ex.Message)
        Finally
            conn.Close()
        End Try

        Debug.WriteLine("Result(" & a & ": " & sql(a) & ") gives ThisTable.Count=" & ThisTable.Count)
    Next
End Sub

Результаты:

Result(0: LIKE 'MD Prince George%';) gives ThisTable.Count=1
Result(1: = 'MD Prince George''s';) gives ThisTable.Count=1
SQLite error (1): near "s": syntax error
Exception thrown: 'System.Data.SQLite.SQLiteException' in System.Data.SQLite.dll
SQL logic error
near "s": syntax error
Result(2: = 'MD Prince George's';) gives ThisTable.Count=1

Это показывает, что первое утверждение было найдено: я включил его, чтобы доказать этотакая запись в таблице.Второе утверждение, пытающееся сопоставить 2 одинарные кавычки с 2 одинарными, не возвращает результата.Третье утверждение, пытаясь сопоставить 2 одинарные кавычки с 1 одинарной, возвращает ошибку.

Мой вопрос: каким должно быть мое утверждение select, чтобы найти всю эту единственную запись или другие записи, которые могут иметь 2одинарные кавычки в них?Нет, я не хочу найти только% ''%.

...