我是新来的堆栈溢出,但无论如何,我有问题,关于我的代码。当我试图运行程序,并点击登录功能,我得到一个关于这个语句的错误。。。它说:formatexception未处理。mscorlib.dll中发生类型为“system.formatexception”的未处理异常。其他信息:输入字符串的格式不正确。
Imports MySql.Data.MySqlClient
Public Class Login_page
Private Sub Login_page_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.CenterToScreen()
End Sub
Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click
Close()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim MysqlConnection As New MySqlConnection("host=127.0.0.1; user=root; database = storage_db")
Dim Command As New MySqlCommand("SELECT * FROM `login_access` where username = @username and password = @password", MysqlConnection)
Command.Parameters.AddWithValue("@username", SqlDbType.VarChar).Value = TextBoxUsername.Text
Command.Parameters.AddWithValue("@password", SqlDbType.VarChar).Value = TextBoxPassword.Text
Dim Adapter As New MySqlDataAdapter(Command)
Dim Table As New DataTable()
Adapter.Fill(Table)
If Table.Rows.Count() <= 0 Then
MessageBox.Show("Invalid")
Else
MessageBox.Show("Login Successfully")
End If
End Sub
End Class
1条答案
按热度按时间jjjwad0x1#
这些行是错误的,原因有很多:
首先,你用的是
MySqlClient
对于mysql,不是SqlClient
对于sql server。这意味着你需要MySqlDbType
而不是SqlDbType
.第二和第三,你需要决定是否使用
Add
或者AddWithValue
因为,事实上,你在混合和搭配。如果你使用AddWithValue
则不指定从值推断的数据类型:但这通常是不鼓励的,因为推断的类型通常不是您想要的类型。这意味着你应该使用
Add
. 在这种情况下,还应指定可变长度数据类型的大小:编辑:
记录在案,在您的原始代码中发生的事情基本上是这样的:
所以添加了一个参数,值为
SqlDbType.VarChar
,这将被解释为Integer
以及由此推断出的参数数据类型。这个Value
然后使用String
无法转换为Integer
因此FormatException
被扔了。