vb代码中的MySQL命令不起作用

时间:2016-06-12 18:09:10

标签: mysql asp.net vb.net

我一直在尝试创建一个登录页面,用于检查您是我的SQL数据源中的管理员还是客户。我不确定为什么它无法理解MySQLCommand。我在参考文献中添加了MySql.Data,但这似乎不起作用。

例如:MySqlConnectionMySqlCommand有蓝色标记。

        Dim cmd As MySqlCommand = New MySqlCommand '(strSQL, con)

2 个答案:

答案 0 :(得分:1)

MySql中的

Password is a reserved word。如果你想使用一个具有该名称的字段,那么每当你在代码中使用它时,你应该记得把它放在反引号之间:

 `password` = ...

说你的代码有严重的问题。您永远不应该连接来自用户输入的字符串以形成sql文本。这会导致解析问题和Sql Injection攻击导致的语法错误。你应该使用像这样的参数化查询

   strSQL = "SELECT name FROM employer WHERE (login=@login AND `password`=@pwd"
   Dim cmd As MySqlCommand = New MySqlCommand(strSQL, con)
   cmd.Parameters.Add("@login", MySqlDbType.VarChar).Value = strUser 
   cmd.Parameters.Add("@pwd",MySqlDbType.VarChar).Value = strPaswoord
   con.Open()
   If cmd.ExecuteScalar() = Nothing Then
      ....

最后,您还应该更改获取数据的方式,因为出于性能原因,您希望最大限度地减少访问数据库的行程。您应该使用单个查询选择Name和EMail,并使用MySqlDataReader获取数据。

代码中存在的其他问题是缺少关于连接的适当使用声明以及由数据库中存储的可能的明文密码引起的安全问题。

答案 1 :(得分:0)

@GSerg问我是否可以右键单击并解决。 我试过了,但那不是一个选择。 在弄清楚错误后,似乎我不得不写在顶部:

Imports MySql.Data.MySqlClient

当我使用密码为MySQL时,我也不得不添加反引号,因为@Steve提醒我。

感谢您的帮助!