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))
但现在它向我发送错误,告诉我输入字符串的格式不正确..
答案 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 + "'"
您需要插入反引号,而不是单引号。