MySql.Data.MySqlClient.MySqlException - vb.net

时间:2013-05-08 15:06:11

标签: mysql vb.net

无法弄清楚我的代码出了什么问题。我想从mysql数据库中检索一个sha256密钥。

keys table:
Id(int 4)    |  key (varchar64) 
1            |  5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

myAdapter.Fill(mydataatable)一行不断抛出错误

  

MySql.Data.MySqlClient.MySqlException未处理
  ErrorCode = -2147467259 Message =您的SQL语法中有错误;   检查与您的MySQL服务器版本对应的手册   在第1行的'keys WHERE id = 1'附近使用正确的语法

以下是完整的错误日志: http://pastebin.com/EG4GfywA

这是我的代码,我从youtube上学到了......

  Dim connectDatabase As New MySqlConnection("Server=localhost;User Id=root;Password=testing123;Database=flag15")
    If TextBox1.Text = "" Then
        MessageBox.Show("Please input a user id", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Else
        Dim myAdapter As New MySqlDataAdapter("SELECT * FROM keys WHERE id= " & TextBox1.Text, connectDatabase)
        Dim mydataatable As New DataTable
        myAdapter.Fill(mydataatable)
        If mydataatable.Rows.Count > 0 Then
            Label4.Text = mydataatable.Rows(0).Item("key")
        Else
            MessageBox.Show("User ID is not found", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            TextBox1.Text = ""
            Label4.Text = ""
        End If
    End If

2 个答案:

答案 0 :(得分:0)

对我来说似乎是正确的。尝试添加“;”在查询结束时。

将myAdapter变暗为新的MySqlDataAdapter(“SELECT * FROM keys WHERE id =”& Integer.parse(Trim(TextBox1.Text))+“;”,connectDatabase)

我添加了一个trim和Integer分析,以防你传递更多空白字符。

尝试记录并发布您正在运行的FINAL查询。

答案 1 :(得分:0)

我假设你需要WHERE id= ...左右的撇号。但是,您对sql-injection持开放态度。不要连接你的sql字符串,而是使用sql-parameters。

Using con = New MySqlConnection("Server=localhost;User Id=root;Password=testing123;Database=flag15")
    Using myAdapter = New MySqlDataAdapter("SELECT * FROM keys WHERE id=@id", con)
        myAdapter.SelectCommand.Parameters.AddWithValue("@id", TextBox1.Text)
        Dim mydataatable As New DataTable
        myAdapter.Fill(mydataatable)
        '...'
    End Using
End Using