Fügen Sie in VB.Net nur aktivierte Textfelder in MySQL ein
P粉043432210
P粉043432210 2024-02-21 19:42:03
0
1
364

Ich erstelle in VB.Net ein Warenwirtschaftssystem, dessen Grundfunktionalität darin besteht, eingehende Rechnungen zu verarbeiten. Ich möchte Daten in meine Remote-MySQL-Datenbank einfügen, aber nur, wenn das Textfeld als aktiviert gilt. Ich habe kein Problem damit, Daten in die Datenbank einzufügen, wenn ich möchte, dass alle Felder eingefügt werden. Ich möchte aber, dass die Kontrollkästchen bestimmte Produkte aktivieren und es den Mitarbeitern ermöglichen, nur bestimmte Artikel einzugeben. Die Kontrollkästchen aktivieren und deaktivieren die Textfelder zwar nach Bedarf, aber wenn die Daten in die Datenbank eingefügt werden, werden für alle Produkttypen Nullwerte eingegeben, was ich nicht möchte, da dies das Rechnungssystem durcheinander bringt . Derzeit habe ich eine if then-Anweisung ausprobiert, aber das Problem besteht darin, dass erwartet wird, dass ein Textfeld definiert wird, das nicht aktiviert ist. Der Code, den ich ausprobiert habe, ist:

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粉043432210
P粉043432210

Antworte allen(1)
P粉739706089

您不能只插入没有行的列。因此,如果要插入一列,则必须插入所有列。如果您不想添加值,则该列可以是 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!