2012-01-05 47 views
0

我正在使用MS Access數據庫。現在我必須更新一個特定的單元格值。這裏是我的代碼:在VB.net中更新數據庫表的單個單元格

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

Dim str As String 
Dim Presc As New System.Text.StringBuilder 
Dim prs As String(), j As Integer 
prs = Split(txtPrescription.Text, vbCrLf) 
For j = 0 To prs.Length - 1 
    Presc.Append(prs(j)) 
    Presc.Append(",") 
Next 
Try 
    str = Trim(lsvCase.SelectedItems(0).Text) 
    'MessageBox.Show(str) 
    Dim con As System.Data.OleDb.OleDbConnection 
    Dim ds As New DataSet 
    Dim rea As System.Data.OleDb.OleDbDataReader 
    con = New OleDb.OleDbConnection 
    Dim da As New System.Data.OleDb.OleDbDataAdapter 
    con.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source= F:\Sowmya Laptop Backups\sowdb1.accdb;" 
    con.Open() 
    Dim cmd As OleDb.OleDbCommand = con.CreateCommand 
    cmd.CommandText = "UPDATE Casehistory set Prescription =' " & Presc.ToString() & "'" 
    rea = cmd.ExecuteReader 
    cmd.ExecuteNonQuery() 
    da.FillSchema(ds, SchemaType.Mapped) 
    da.Update(ds, "Casehistory") 
    con.Close() 
Catch ex As Exception 
Finally 
End Try 
End Sub 

此代碼更新該列中的所有單元格。我想更新其CASE_ID = STR 只有特定的細胞在那裏我必須添加WHERE子句(WHERE CASE_ID =「&海峽&」

+0

我不認爲你需要在那裏的數據讀取器(Rea)。你可能會離開沒有DataSet和DataAdapter ... – Simon 2012-01-05 10:58:11

回答

1

我會用命令的參數,整潔並防止SQL注入的問題是這樣的:。

cmd.CommandText = "UPDATE Casehistory set Prescription [email protected] WHERE Case_ID = @CaseID" 
cmd.Parameters.AddWithValue("@Presc", Presc.ToString()) 
cmd.Parameters.AddWithValue("@CaseID",str) 

順便說一句,有所有這些代碼在按鈕單擊事件小於理想的,你可能想要調查以更加可維護的方式構建您的應用 - 例如,可能使用Data Layer

+0

謝謝先生,它的工作原理 – user993444 2012-01-05 11:01:27

0

WHERE子句應被追加到OleDbCommmand.CommandText,在那裏結束您定義的Update語句

+0

但我無法得到結果,請發送給我那行代碼 – user993444 2012-01-05 10:45:10

+0

cmd.CommandText =「UPDATE Casehistory set Prescription ='」&Presc.ToString ()&「'WHERE Case_ID ='」&str&「'」 – 2012-01-05 10:46:59

+0

沒有先生,沒有更新任何東西 – user993444 2012-01-05 10:54:19

相關問題