【问题标题】:System.InvalidCastException: 'Conversion from string "employee" to type 'Boolean' is not valid.' [closed]System.InvalidCastException:“从字符串“员工”到类型“布尔”的转换无效。 [关闭]
【发布时间】:2021-05-05 07:42:10
【问题描述】:

我创建的表单会弹出,但是当我单击打开按钮时会出现此错误。该错误将我引导至 sqlConn.ConnectionString ,因此有关该问题的任何见解都非常有帮助。

     Private Sub updateTable()

    sqlConn.ConnectionString = "server=" + server + ";" + "user id =" = username + ";" _
    + "password= " + password + ";" + "database" = database

    sqlConn.Open()

        sqlCmd.CommandText = "SELECT * From employee.employee"

        sqlRd = sqlCmd.ExecuteReader
        sqlDt.Load(sqlRd)
        sqlRd.Close()
        sqlConn.Close()
        DataGridView1.DataSource = sqlDt

End Sub

【问题讨论】:

  • 调试你的代码。你应该已经这样做了。抛出的异常在哪一行?你为什么要首先将String 转换为Boolean?请注意,您不一定要明确地这样做。
  • 什么是employee.employee?你有一个名为employee 的模式吗?如果没有,你到底有什么资格?您从表中选择,而不是从列中选择。编辑:刚刚意识到这是针对 MySQL 而不是 SQL Server。我用的不多,所以也许我的评论不适用。再说一次,也许是。
  • 我已经调试过我的代码仍然是一样的,“数据库”=数据库是抛出异常的地方,数据库=“雇员”,雇员是我的模式。 employee.employee 调出我的模式和表。基本上我想打开我的数据库中的内容编辑:我是 c# 或编程新手,所以我试图了解这里出了什么问题

标签: mysql asp.net vb.net


【解决方案1】:

您实际上并没有正确阅读您的代码,而是看到了您期望看到的内容,而不是实际存在的内容。这个:

sqlConn.ConnectionString = "server=" + server + ";" + "user id =" = username + ";" _
+ "password= " + password + ";" + "database" = database

由于多种原因是错误的。你真正想写的是这样的:

sqlConn.ConnectionString = "server=" + server + ";" + "user id =" + username + ";" _
+ "password= " + password + ";" + "database=" + database

请注意,您的代码中有三个错误。您需要更加小心,尤其是当您明确知道那是错误行时。

也就是说,可以通过多种方式改进该代码。首先,如果要连接Strings,请使用字符串连接运算符,而不是加法运算符。此外,切勿连接两个文字:

sqlConn.ConnectionString = "server=" & server & ";user id=" & username & ";password=" & password & ";database=" & database

问题是,您首先犯此错误的原因是,以这种方式连接大量子字符串会使您的代码难以阅读,因此容易出错。我通常只会使用一个连接运算符,或者最多使用两个。如果您需要更多,请使用其他选项。从 .NET 1.0 到最近,该选项将是 String.Format

sqlConn.ConnectionString = String.Format("server={0};user id={1};password={2};database={3}",
                                         server,
                                         username,
                                         password,
                                         database)

更具可读性,因此不容易出现您犯的那种错误。在更新的版本中,您还可以选择字符串插值:

sqlConn.ConnectionString = $"server={server};user id={username};password={password};database={database}"

不过,您不应该使用任何这些选项。在构建连接字符串时,请使用适当的连接字符串构建器。所有 ADO.NET 提供程序都有这样的类,Connector/Net 也不例外。我不确定具体的属性会被称为什么,但它看起来像这样:

Dim builder As New MySqlConnectionStringBuilder With {.Server = server,
                                                      .UserID = username,
                                                      .Password = password,
                                                      .Database = database}

sqlConn.ConnectionString = builder.ConnectionString

这仍然不太容易出错。

【讨论】:

  • 感谢您的反馈,它解决了我的问题
  • @LudemarLumasag,如果答案解决了您的问题,请接受。这就是您向所有人展示您的问题已得到解答的方式,并且您不再需要帮助他们打开问题并阅读整个内容。这是另一个示例,说明为什么您应该在收到提示并了解如何正确使用该网站时进行网站导览。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多