2012-01-05 17 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の 私は句は、OleDbCommmand.CommandTextの最後に追加されなければならないWHERE句(CASE_IDは=「& STR &」

+0

私はそこにDataReader(Rea)が必要ではないと思います。あなたはおそらく、DataSetとDataAdapterのどちらも使わなくても逃げることができます。 – Simon

答えて

1

私はコマンドパラメータを使用するUPDATEステートメントを定義し、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

0

ザ・を追加する必要がどこにあるだけで、特定のセルを更新したいです。あなたはすっきり、

+0

結果を得ることができません。コードの行を送ってください。 – user993444

+0

cmd.CommandText = "Casehistoryの更新Prescription = '"&Presc.ToString ()& "'WHERE Case_ID ='"&str& "'" –

+0

いいえ、何も更新していません – user993444

関連する問題