![](/img/trans.png)
[英]how to insert data from datagridview to database mysql vb.net
[英]Wrong Data being sent to Mysql database from VB.net through paramatized insert statement
我正在尝试从vb.net向mysql插入数据。 当我使用串联的sql查询时,它运行良好,但是当我对其进行参数化时,vb.net try and catch语句未显示任何错误,但是发送了错误的值和一些空值。
MysqlConn = New MySqlConnection
MysqlConn.ConnectionString = "server=127.0.0.1;userid=root;password=root;database=my_mysql_database"
Dim READER As MySqlDataReader
Try
MysqlConn.Open()
Dim Query As String
'Query = "INSERT INTO my_mysql_database.edata(E_id,Name,Surname,Age,user_name,password, Gender)values('" & Txt_EID.Text & "', '" & Txt_Name.Text & "', '" & Txt_Surname.Text & "', '" & Txt_Age.Text & "', '" & Txt_User_Name.Text & "', '" & Txt_Password.Text & "', '" & Txt_Gender.Text & "')"'
Query = "INSERT INTO my_mysql_database.edata
values(E_id=@Eid, Name=@Name, Surname=@Surname, Age=@Age,
user_name=@UserName, password=@Pass, Gender=@Gender, DOB=@Dob,
Image=@Ima, Email=@Email)"
COMMAND = New MySqlCommand(Query, MysqlConn)
COMMAND.Parameters.AddWithValue("@Eid", Txt_EID.Text)
COMMAND.Parameters.AddWithValue("@Name", Txt_Name.Text)
COMMAND.Parameters.AddWithValue("@Surname", Txt_Surname.Text)
COMMAND.Parameters.AddWithValue("@Age", Txt_Age.Text)
COMMAND.Parameters.AddWithValue("@UserName", Txt_User_Name.Text)
COMMAND.Parameters.AddWithValue("@Pass", Txt_Password.Text)
COMMAND.Parameters.AddWithValue("@Gender", Txt_Gender.Text)
COMMAND.Parameters.AddWithValue("@Dob", DTP_Date.Value)
COMMAND.Parameters.AddWithValue("@Ima", Txt_Image.Text)
COMMAND.Parameters.AddWithValue("@Email", Txt_Email.Text)
READER = COMMAND.ExecuteReader
MsgBox("Added to Database")
MysqlConn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
MysqlConn.Dispose()
End Try
当我执行参数化方式时,未显示任何错误,但零且所有null均保存在mysql数据库中。
在调试期间,我检查了存储在参数中的值,它们是正确的,但是发送到Mysql dataabse的值是零,并且所有NULL。 可能会发生什么。 如何将正确的值发送到Mysql数据库
编辑:这是数据类型的图片
如果是这样的话,我可能会离开这里,有人可以教育我。 我的SQL知识告诉我您的查询错误。
您说这一项工作:
Query = "INSERT INTO my_mysql_database.edata(E_id,Name,Surname,Age,user_name,password, Gender)values('" & Txt_EID.Text & "', '" & Txt_Name.Text & "', '" & Txt_Surname.Text & "', '" & Txt_Age.Text & "', '" & Txt_User_Name.Text & "', '" & Txt_Password.Text & "', '" & Txt_Gender.Text & "')"'
那么,为什么要更改第二个查询的格式? INSERT INTO表值(列=值)当然应该是INSERT INTO表(列)值(值)。 因此,您的查询应如下所示:
Query = "INSERT INTO my_mysql_database.edata (E_id,Name,Surname,Age,user_name,password,Gender,DOB,Image,Email) Values (@Eid,@Name,@Surname,@Age,@UserName,@Pass,@Gender,@Dob,@Ima,@Email)
另外,我强烈建议您将E_id设置为自动增量。 自己添加ID似乎没有必要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.