【问题标题】:MySQL commands in vb code are not workingvb 代码中的 MySQL 命令不起作用
【发布时间】:2016-06-12 18:09:10
【问题描述】:

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

例如:MySqlConnectionMySqlCommand 有蓝色下划线。

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

【问题讨论】:

  • 你得到什么错误(如果有的话)?
  • 如果您右键单击它们,是否有Resolve 选项?
  • @Steve Type 'MySQLComman' 未定义

标签: mysql asp.net vb.net


【解决方案1】:

Password is a reserved word 在 MySql 中。如果您想使用具有该名称的字段,那么每次在代码中使用它时,您都应该记住将其放在反引号之间:

 `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
      ....

最后,您还应该更改获取数据的方式,因为出于性能原因,您希望尽量减少访问数据库的次数。您应该使用单个查询同时选择名称和电子邮件,并使用 MySqlDataReader 来获取数据。

您的代码中存在的其他问题是在连接周围缺少适当的 using 语句,以及由存储在数据库中的可能的明文密码引起的安全问题。

【讨论】:

  • 感谢您的帮助。我是这一切的新手,并试图保持简单,所以我没有想到如何停止 sqlinjections。这也是为什么我的代码可能不是很干净的原因。但例如:Dim con As MySqlConnection = New MySqlConnection() 表明 MySqlConnection 未定义。
  • 您是否添加了对 MySql.Data.dll 库的引用,然后添加了 Imports MySql.Data.MySqlClient ?如果您想使用该库访问 MySql 数据库,这些步骤是基本的
  • 是的!我忘记了顶部的 MySql.Data.MySqlClient !我只是想通了。谢谢
【解决方案2】:

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

Imports MySql.Data.MySqlClient

@Steve 提醒我,当我使用 MySQL 的密码一词时,我还必须添加反引号。

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多