mysql - 在MYSQL的tinyint字段中选择使用-1

标签 mysql vb.net select tinyint

我编写了以下代码来过滤想要通过帖子或电子邮件获得时事通讯的人:

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()

不幸的是,它返回一个空的数据网格,而当我选择 newsletternew 选项时,它会显示完整的表格。 “每个电子邮件的新闻通讯”和“每个帖子的新闻通讯”字段是 tinyint 字段,其值可以是 -1(表示在应用程序中选中)和 0(表示未选中)。

我真的不明白为什么它不起作用。我希望任何人都可以提供帮助。

最佳答案

您需要对列名称使用反引号而不是单引号。考虑这个 WHERE 条件:

WHERE 'Newsletter per e-mail' =-1

它将字符串常量每封电子邮件的新闻通讯-1进行比较。比较的结果始终为false。试试这个:

WHERE `Newsletter per e-mail` = -1

现在它指的是列名而不是字符串常量。

最后,尽可能避免需要反引号的列名(几乎总是如此)。正如您所看到的,它们往往会带来麻烦。

关于mysql - 在MYSQL的tinyint字段中选择使用-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16652249/

相关文章:

mysql - 使用基于另一个已填充表的 INNER JOIN UPDATE 语句更新空表

css - vb.net 和 css : For loop to create 2 controls and place side by side 'n' times each time on a new line

c# - 如何使用 LINQ to SQL 对分层数据进行查询?

mysql - 基于来自多个表的数据在 SQL 中更新

php - 从表中选择,其中列是 PHP 中的外键

jquery - 使用多个选择框更新单个范围值

mysql - PHP MySQLi 排名位置

sql - 如何在 Kohana 3.x 中使用纯 SQL

mysql - 带有多个 OR 的 Where 子句

MySQL EF6 'System.Data.EntityClient' 未在机器中注册