簡體   English   中英

通過參數化的插入語句將錯誤的數據從VB.net發送到Mysql數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM