Выберите с помощью -1 в поле tinyint на MYSQL
Я написал следующий код, чтобы отфильтровать людей, которым нужна новостная рассылка по почте или по электронной почте:
Sub loadoverviewnewsletter()
Dim sql As String
Dim sql1 As String
If newslettermail = True Then
sql = "SELECT * FROM Donateurs WHERE 'Newsletter per e-mail' =-1"
sql1 = "SELECT * FROM Donateurs WHERE 'Newsletter per e-mail' =-1"
ElseIf newsletterpost = True Then
sql = "SELECT * FROM Donateurs WHERE 'Newsletter per post' =-1"
sql1 = "SELECT * FROM Donateurs WHERE 'Newsletter per post' =-1"
ElseIf newsletternew = True Then
sql = "SELECT * FROM Donateurs WHERE 'Newsletter per post' =0 AND 'Nieuwsbrief per e-mail' =0"
sql1 = "SELECT * FROM Donateurs WHERE 'Newsletter per post' =0 AND 'Nieuwsbrief per e-mail' =0"
Else
sql = "SELECT * FROM Donateurs"
sql1 = "SELECT * FROM Donateurs"
End If
Dim adapter As New MySqlClient.MySqlDataAdapter(sql, modConnectorHandler.ServerString)
Dim dt As New DataTable("newsletteroverview")
adapter.Fill(dt)
ShowDonateurs.datagrid.DataSource = dt
ShowDonateurs.ShowDialog()
Dim adapter1 As New MySqlClient.MySqlDataAdapter(sql1, modConnectorHandler.ServerString)
Dim cmd1 As New MySqlClient.MySqlCommand(sql1, modConnectorHandler.mysqlconnection)
modConnectorHandler.mysqlconnection.Open()
Dim myreader As MySqlClient.MySqlDataReader = cmd1.ExecuteReader
myreader.Read()
modConnectorHandler.mysqlconnection.Close()
OverviewNewsLetter.Close()
К сожалению, он возвращает пустую сетку данных, а когда я выбираю параметр новостной рассылки, он показывает полную таблицу. Поля "Информационный бюллетень по электронной почте" и "Информационный бюллетень по почте" являются полями tinyint, которые могут иметь значения -1 (означает, что проверено в приложении) и 0 (значит, не отмечено).
Я действительно не понимаю, почему это не работает.. Я надеюсь, что любой может помочь.
1 ответ
Вы должны использовать обратные кавычки вместо одинарных кавычек для имен столбцов. Учти это WHERE
состояние:
WHERE 'Newsletter per e-mail' =-1
Это сравнивает строковую константу Newsletter per e-mail
в -1
, Результат сравнения всегда false
, Попробуйте это вместо этого:
WHERE `Newsletter per e-mail` = -1
Теперь это относится к имени столбца, а не к строковой константе.
Наконец, по возможности избегайте имен столбцов, которые должны иметь обратную косую черту (а это почти всегда). Как видите, они, как правило, приводят к неприятностям.