首頁  >  問答  >  主體

在 VB.Net 中僅將啟用的文字方塊插入 MySQL

我正在VB.Net中建立一個庫存管理系統,其基本功能是處理傳入發票。我想將資料插入到我的遠端 MySQL 資料庫中,但前提是文字方塊被認為已啟用。當我希望插入所有欄位時,將資料插入資料庫沒有問題。但我希望複選框啟用某些產品並允許員工僅輸入特定項目。這些複選框確實根據需要啟用和禁用文字字段,但是當將資料插入資料庫時,它將為所有產品類型輸入空值,我不希望它這樣做,因為它會弄亂發票系統。目前,我嘗試了 if then 語句,但遇到的問題是它希望定義未啟用的文字方塊。 我嘗試過的程式碼是:

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

P粉043432210P粉043432210240 天前362

全部回覆(1)我來回復

  • P粉739706089

    P粉7397060892024-02-22 09:18:22

    您不能只插入沒有行的列。因此,如果要插入一列,則必須插入所有列。如果您不想新增值,則該列可以是 NULL 或空字串,具體取決於資料庫中的列。也可以使用 Using 並使用 Async/Await 將資料庫工作從 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
    

    如果我理解你目前的設計,

    表格名稱

    ID 第 1 列 第 2 列 第 3 列
    1 abc 定義 ghi
    2 jkl mno pqr

    回覆
    0
  • 取消回覆