2013-02-16 26 views
0

我正在做我的系統中更新和/或插入數據到數據庫的一部分。我有一個組合框和10個文本框。在這裏,組合框如果填充了我的數據庫中診斷表的疾病。VB 2008如何使用文本框插入和更新數據庫錶行

診斷表的結構是: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數據庫(的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個行添加到表格中。

+0

我有點困惑,你能夠連接到你SQL DB?如果是這樣,我可以提供我使用的代碼。如果不是的話,你可以根據提供的代碼更具體一些你不能做的事情。 – MonkeyDoug 2013-02-16 16:06:39

+0

你知道你的更新中的sym值沒有數字嗎?那是故意的嗎? – MonkeyDoug 2013-02-16 16:37:02

+0

嗯有點..我的意思是說,這將是症狀,我沒有一個想法,我將如何在更新語句中的SQL。 – VBeginner 2013-02-16 16:57:01

回答

0

您正試圖在同一個查詢中插入多行,這是不可能的。您需要爲插入的每一行分別查詢。通過文本框陣列(從你以前的問題)循環插入:

Dim arrayOfTextboxes() As TextBox = {symp0, ... put all textboxes here..., symp9} 
myConn.Open() 

If Duplicate() = False Then 

    STRSQL = "insert into diagnose values (@ill, @sym)" 

    For i = 0 To arrayOfTextboxes.Count - 1 

     If String.IsNullOrEmpty(arrayOfTextboxes(i).Text) Then Continue For 

     Using myCmd = New MySqlCommand(STRSQL, myConn) 
      myCmd.Parameters.AddWithValue("@ill", cmbRecord.Text) 
      myCmd.Parameters.AddWithValue("@sym", arrayOfTextboxes(i).Text)    
      myCmd.ExecuteNonQuery() 
     End Using 

    Next   

     MsgBox("Record Added") 

Else 

     // I don't get what you want to do in the update part yet. 

End If 

myConn.Close() 
+0

你也可以參考我以前的帖子先生,以更好地瞭解我正在嘗試做什麼。 http://stackoverflow.com/questions/14859711/vb2008-retrieve-value-from-combobox-selected-item-and-display-to-multiple-textbo#comment20841417_14859711 – VBeginner 2013-02-16 17:56:57

+0

@VBeginner好的,我會檢查出來並更新我的回答相應 – AbZy 2013-02-16 19:17:48

+0

謝謝你的努力先生。我已經試過你的代碼,但沒有發生任何事沒有錯誤,當我嘗試添加一個記錄消息框「記錄添加」出現,但是當我檢查表時,沒有真正添加。 :( – VBeginner 2013-02-17 02:58:00

相關問題