我正在尝试显示列表视图中的行数。我尝试了这个代码,但它没有工作,它会抛出下面的错误。我正在使用mysql作为后端:
错误:
System.InvalidCastException:从字符串"转换; '"输入 '双'无效。 ---> System.FormatException:输入字符串是 格式不正确
VB代码:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
ViewState("Data") = ""
Using con As New MySqlConnection(constr)
Using cmd As New MySqlCommand("SELECT * FROM school")
Using sda As New MySqlDataAdapter()
cmd.Connection = con
sda.SelectCommand = cmd
cmd.CommandTimeout = 0
Using dt As New DataTable()
sda.Fill(dt)
ViewState("Data") = dt
schoollists.DataSource = dt
schoollists.DataBind()
End Using
End Using
End Using
End Using
countResult.Text = (" '" + schoollists.Items.Count + "';")
Catch ex As Exception
Response.Write(ex)
End Try
End Sub
答案 0 :(得分:0)
在VB.NET中使用+ Operator
连接一个字符串和一个数字会产生意外的结果(或者更好的例外,你可以看到)
在字符串和数字之间使用+
会导致尝试将字符串" '"
(在您的情况下)转换为数字,当然,这将失败。
为了安全起见,在VB.NET中连接字符串的正确运算符是& operator
countResult.Text = (" '" & schoollists.Items.Count & "';")
作为旁注,这将发生,因为您在项目设置中将OPTION STRICT设置为OFF。使用此配置,编译器无法捕获此问题,并且在运行时命中它之前无法看到错误。我强烈建议将OPTION STRICT设置为ON,如果最初你需要修复很多代码。
的备注部分中提供了与数字和字符串一起使用时加号运算符行为的详细说明。