我正在VB.Net中創(chuàng)建一個(gè)庫(kù)存管理系統(tǒng),其基本功能是處理傳入發(fā)票。我想將數(shù)據(jù)插入到我的遠(yuǎn)程 MySQL 數(shù)據(jù)庫(kù)中,但前提是文本框被認(rèn)為已啟用。當(dāng)我希望插入所有字段時(shí),將數(shù)據(jù)插入數(shù)據(jù)庫(kù)沒(méi)有問(wèn)題。但我希望復(fù)選框啟用某些產(chǎn)品并允許員工僅輸入特定項(xiàng)目。這些復(fù)選框確實(shí)根據(jù)需要啟用和禁用文本字段,但是當(dāng)將數(shù)據(jù)插入數(shù)據(jù)庫(kù)時(shí)??,它將為所有產(chǎn)品類型輸入空值,我不希望它這樣做,因?yàn)樗鼤?huì)弄亂發(fā)票系統(tǒng)。目前,我嘗試了 if then 語(yǔ)句,但遇到的問(wèn)題是它希望定義未啟用的文本框。 我嘗試過(guò)的代碼是:
Public Sub btnEnter_Click(sender As Object, e As EventArgs) Handles btnEnter.Click Dim mysqlconn as new MySqlConnection ("ServerConnection") mysqlconn.Open() dim mysqlCmd as new MysqlCommand mysqlcmd.Connection = MysqlConn mysqlcmd.CommandText = "Insert into Table_Name (Column1,Column2,Column3) Values (@rec1,@Rec2,@Rec3)" If txtTextbox1.Enabled = True then mysqlcmd.Parameters.AddWithValue("@Rec1",Column1.text) End If If txtTextBox2.Enabled = True then mysqlcmd.Parameters.AddWithValue(@Rec2,Column2.text) End IF IF txtTextBox3.Enabled = True then mysqlcmd.Parameters.AddWithValue(@Rec3,Column3.text) End If
您不能只插入沒(méi)有行的列。因此,如果要插入一列,則必須插入所有列。如果您不想添加值,則該列可以是 NULL 或空字符串,具體取決于數(shù)據(jù)庫(kù)中的列。還可以使用 Using
并使用 Async/Await
將數(shù)據(jù)庫(kù)工作從 UI 中移除
Public Async Sub btnEnter_Click(sender As Object, e As EventArgs) Handles btnEnter.Click ' if your columns take NULL to mean no value Await AddParams( If(txtTextbox1.Enabled, Column1.Text, Nothing), If(txtTextbox2.Enabled, Column2.Text, Nothing), If(txtTextbox3.Enabled, Column3.Text, Nothing)) ' else, if an empty string means no value Await AddParams( If(txtTextbox1.Enabled, Column1.Text, ""), If(txtTextbox2.Enabled, Column2.Text, ""), If(txtTextbox3.Enabled, Column3.Text, "")) End Sub Private Function AddParams(param1 As String, param2 As String, param3 As String) As Task Return Task.Run( Sub() Using mysqlconn As New MySqlConnection("ServerConnection") mysqlconn.Open() Using mysqlCmd As New MySqlCommand("Insert into Table_Name (Column1,Column2,Column3) Values (@rec1,@Rec2,@Rec3)", mysqlconn) mysqlCmd.Parameters.AddWithValue("@Rec1", param1) mysqlCmd.Parameters.AddWithValue("@Rec2", param2) mysqlCmd.Parameters.AddWithValue("@Rec3", param3) End Using End Using End Sub) End Function
如果我理解你當(dāng)前的設(shè)計(jì),
表名稱
ID | 第 1 列 | 第 2 列 | 第 3 列 |
---|---|---|---|
1 | abc | 定義 | ghi |
2 | jkl | mno | pqr |