MySql返回列名,而不是值

时间:2011-12-30 17:38:42

标签: mysql vb.net

myCommand.CommandText = "SELECT 'USED' FROM `KEYS` WHERE `KEYS`.`KEY` = '" + TextBox1.Text + "'"

Dim myReader As MySqlDataReader
            myReader = myCommand.ExecuteReader
            While (myReader.Read())
                MessageBox.Show(myReader.GetString(0))
            End While

返回的字符串是 "USED" 。但这是错误的:它应该返回整数0。那是为什么?

编辑:我将MessageBox行更改为MessageBox.Show(myReader.GetInt16(0))但现在它向我发送错误,告诉我输入字符串的格式不正确..

5 个答案:

答案 0 :(得分:4)

你需要反击,而不是撇号“不是”

您实际上是选择字符串“USED”而不是列。你可以一起删除撇号并说出

myCommand.CommandText = "SELECT USED FROM `KEYS` WHERE `KEYS`.`KEY` = '" + TextBox1.Text + "'"

另外,请注意,不要使用动态SQL - 使用准备好的查询:

myCommand.CommandText = "SELECT USED FROM KEYS WHERE KEYS.KEY = @Key";
myCommand.Parameters.AddWithValue("@Key", TextBox1.Text);

否则你很容易受到SQL注入(这是一件非常糟糕的事情)。

答案 1 :(得分:1)

您使用的是错误的引号;你需要使用`as so:

myCommand.CommandText = "SELECT `USED` FROM `KEYS` WHERE `KEYS`.`KEY` = '" + TextBox1.Text + "'"

答案 2 :(得分:1)

删除'USED'并改为使用。

答案 3 :(得分:1)

以“USED”名称引用的单引号告诉它在未命名的列中返回“USED”一词。

答案 4 :(得分:0)

在此更改

"SELECT `USED` FROM `KEYS` WHERE `KEYS`.`KEY` = '" + TextBox1.Text + "'"

您需要插入反引号,而不是单引号。