Mysql vb.net上的FormatException未处理错误

Mysql vb.net上的FormatException未处理错误,mysql,vb.net,Mysql,Vb.net,我不熟悉堆栈溢出,但无论如何,我的代码有问题。当我试图运行该程序并单击登录函数时,我得到了一个关于该语句的错误。。。Fill(表)它说:FormatException未处理。mscorlib.dll中发生类型为“System.FormatException”的未处理异常。其他信息:输入字符串的格式不正确 导入MySql.Data.MySqlClient 公共类登录页面 私有子登录\页面\加载(发送者作为对象,e作为事件参数)处理MyBase.Load Me.CenterToScreen() 端接

我不熟悉堆栈溢出,但无论如何,我的代码有问题。当我试图运行该程序并单击登录函数时,我得到了一个关于该语句的错误。。。Fill(表)它说:FormatException未处理。mscorlib.dll中发生类型为“System.FormatException”的未处理异常。其他信息:输入字符串的格式不正确

导入MySql.Data.MySqlClient
公共类登录页面
私有子登录\页面\加载(发送者作为对象,e作为事件参数)处理MyBase.Load
Me.CenterToScreen()
端接头
私有子PictureBox3\u单击(发送者作为对象,e作为事件参数)处理PictureBox3。单击
关闭()
端接头
私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
将MysqlConnection设置为新的MysqlConnection(“主机=127.0.0.1;用户=root;数据库=storage_db”)
Dim命令作为新的MySqlCommand(“从'login_access'中选择*,其中username=@username和password=@password”,MysqlConnection)
Command.Parameters.AddWithValue(“@username”,SqlDbType.VarChar).Value=TextBoxUsername.Text
Command.Parameters.AddWithValue(“@password”,SqlDbType.VarChar).Value=TextBoxPassword.Text
Dim适配器作为新的MySqlDataAdapter(命令)
Dim表作为新数据表()
适配器填充(表)

如果Table.Rows.Count()这些行是错误的,原因有很多:

Command.Parameters.AddWithValue(“@username”,SqlDbType.VarChar).Value=TextBoxUsername.Text
Command.Parameters.AddWithValue(“@password”,SqlDbType.VarChar).Value=TextBoxPassword.Text
首先,您正在对MySQL使用
MySqlClient
,而不是对SQLServer使用
SqlClient
。这意味着您需要使用
MySqlDbType
,而不是
SqlDbType

第二和第三,您需要决定是使用
Add
还是
AddWithValue
,因为实际上,您是在混合和匹配。如果使用
AddWithValue
,则不指定数据类型,因为它是从值推断出来的:

Command.Parameters.AddWithValue(“@username”,TextBoxUsername.Text)
Command.Parameters.AddWithValue(“@password”,TextBoxPassword.Text)
但这通常是不鼓励的,因为推断的类型通常不是您想要的类型。这意味着您应该使用
Add
。在这种情况下,还应指定可变长度数据类型的大小:

Command.Parameters.Add(“@username”,MySqlDbType.VarChar,50)。Value=TextBoxUsername.Text
Command.Parameters.Add(“@password”,MySqlDbType.VarChar,50).Value=TextBoxPassword.Text
编辑:

记录在案,您的原始代码中发生的基本情况如下:

Dim p=Command.Parameters.AddWithValue(“@username”,SqlDbType.VarChar)
p、 Value=TextBoxUsername.Text

因此,添加了一个参数,其值为
SqlDbType.VarChar
,该值将被解释为
整数和由此推断出的参数数据类型。该参数的
使用无法转换为
整数的
字符串
进行设置,因此引发了
格式异常

我在回答中添加了一些信息,这些信息可能有助于您理解原始代码的实际行为。