我正在做我系统的一部分,它正在更新和/或将数据插入数据库。我有一个带有组合框和 10 个文本框的表单。在这里,如果组合框充满了我数据库中诊断表中的疾病。
诊断表的结构是:f_id、疾病、症状,所以一个疾病可以有很多症状。
如果从组合框中选择了一个项目,则症状将显示在文本框中。我已经开始工作了。我的问题是我应该让它能够插入或更新表中的行。我真的不知道该怎么做。到目前为止,这是我的代码:
Call Connect()
If Duplicate() = False Then
STRSQL = "insert into diagnose values ('', @ill, @sym0), ('', @ill, @sym1), ('', @ill, @sym2), ('', @ill, @sym3), ('', @ill, @sym4), ('', @ill, @sym5), ('', @ill, @sym6), ('', @ill, @sym7), ('', @ill, @sym8), ('', @ill, @sym9)"
Using myCmd = New MySqlCommand(STRSQL, myConn)
myConn.Open()
myCmd.Parameters.AddWithValue("ill", cmbRecord.Text)
myCmd.Parameters.AddWithValue("sym0", symp0.Text)
myCmd.Parameters.AddWithValue("sym1", symp1.Text)
myCmd.Parameters.AddWithValue("sym2", symp2.Text)
myCmd.Parameters.AddWithValue("sym3", symp3.Text)
myCmd.Parameters.AddWithValue("sym4", symp4.Text)
myCmd.Parameters.AddWithValue("sym5", symp5.Text)
myCmd.Parameters.AddWithValue("sym6", symp6.Text)
myCmd.Parameters.AddWithValue("sym7", symp7.Text)
myCmd.Parameters.AddWithValue("sym8", symp8.Text)
myCmd.Parameters.AddWithValue("sym9", symp9.Text)
myCmd.ExecuteNonQuery()
End Using
MsgBox("Record Added")
myConn.Close()
Else
STRSQL = "Update diagnose set first_aid = @ill, sname = @symp where first_aid = @ill"
Using myCmd = New MySqlCommand(STRSQL, myConn)
myConn.Open()
myCmd.Parameters.AddWithValue("ill", cmbRecord.Text)
myCmd.Parameters.AddWithValue("sym", symp0.Text)
myCmd.Parameters.AddWithValue("sym", symp1.Text)
myCmd.Parameters.AddWithValue("sym", symp2.Text)
myCmd.Parameters.AddWithValue("sym", symp3.Text)
myCmd.Parameters.AddWithValue("sym", symp4.Text)
myCmd.Parameters.AddWithValue("sym", symp5.Text)
myCmd.Parameters.AddWithValue("sym", symp6.Text)
myCmd.Parameters.AddWithValue("sym", symp7.Text)
myCmd.Parameters.AddWithValue("sym", symp8.Text)
myCmd.Parameters.AddWithValue("sym", symp9.Text)
myCmd.ExecuteNonQuery()
End Using
MsgBox("Record Updated")
myConn.Close()
End If
我已经有一个模块将我的项目连接到 mysql db (myConn)。我不能做的是我不能更新诊断表中的任何行。我也无法添加行。诊断表如下所示(示例):
f_id | illness | symptom
1 | fever | fever
2 | fever | hot temperature
3 | fever | dizziness
4 | fever | headache
所以在这种情况下,假设我在组合框中选择了发烧,那么它将在 4 个文本框中显示症状。如果用户进行了更改,该Duplicate()
函数会检查组合框值是否已经有记录。如果为真,那么它将更新。假设用户添加了另一个症状,所以如果单击保存按钮,发烧将添加另一个带有添加症状的行。
如果为 false,则将添加一条新记录,这意味着将在表中添加新行或多行,具体取决于在文本框中输入的症状数量。因此,假设要添加“感冒”作为新记录,并且我输入了 2 个症状,这意味着我使用了表单中 10 个文本框中的 2 个,然后将在表格中添加 2 行。