2013-05-30 85 views
0
Private Sub submit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles submit.Click 
    Dim con As New OleDb.OleDbConnection 
    Dim cmd As New OleDb.OleDbCommand 
    Dim dbProvider As String = "PROVIDER = Microsoft.Jet.OleDb.4.0;" 
    Dim dbSource As String = "DATA SOURCE =" & Application.StartupPath & "\hospital.mdb" 
    con.ConnectionString = dbProvider & dbSource 
    If Not con.State = ConnectionState.Open Then 
     con.Open() 
    End If 
    cmd.Connection = con 
    cmd.CommandText = "INSERT INTO userdata(masterid, pname, aname, dob, bloodgroup, address, gender, referto, designation, relh, mpass, ward, bed, zone)" & _ 
    "VALUES ('" & Me.masterid.Text & "','" & Me.pname.Text & "','" & Me.aname.Text & "','" & Me.dob.Text & "','" & Me.bloodgroup.Text & "','" & _ 
    Me.address.Text & "','" & Me.gender.Text & "','" & Me.referto.Text & "','" & Me.designation.Text & "','" & Me.relh.Text & "','" & Me.mpass.Text & "','" & _ 
    Me.ward.Text & "','" & Me.bed.Text & "','" & Me.zone.Text & "')" 
    cmd.ExecuteNonQuery() 

    con.Close() 
End Sub 

而且在cmd.Commandtext去的價值觀與你生成SQL語句錯誤在Access INSERT INTO語句從VB.NET

"INSERT INTO userdata(masterid, pname, aname, [dob], bloodgroup, address, gender, referto, designation, relh, mpass, ward, bed, zone)VALUES ('305201323114','fsdfsd','sdfsd','5/29/2013','AB+','sdfsd','Male','sdfsd','sdfsd','sdfsd','sdfdsf','sdfsdf','dfds','North East Zone')" 
+0

而你得到的錯誤是?如果在你說「我得到一個錯誤」之後,你立即說「錯誤是」,並且提供錯誤的描述,包括你得到的任何錯誤信息的確切文本*,那麼我們就可以更容易地解決問題。 。你的信息就在你面前。爲什麼不分享它,讓你更容易幫助你免費獲得幫助的人,這樣他們就不用再努力工作了? –

+0

此代碼將容易受到sql注入攻擊。 –

回答

0

一個潛在問題是'5/29/2013'。 Jet通常使用散列標記#(不是單引號')作爲日期分隔符,因此您可能會通過嘗試將字符串分配給日期/時間字段來獲得「類型不匹配」錯誤。

在任何情況下,您都可以使用參數化查詢來避免這些類型的問題(以及其他問題,如SQL注入)。它會去是這樣的:

cmd.CommandText = "INSERT INTO userdata (masterid, pname, aname, dob, bloodgroup, address, gender, referto, designation, relh, mpass, ward, bed, zone) " & _ 
    "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" 
cmd.Parameters.AddWithValue("?", Me.masterid.Text) 
cmd.Parameters.AddWithValue("?", Me.pname.Text) 
cmd.Parameters.AddWithValue("?", Me.aname.Text) 
' [... and so on ...] 
cmd.Parameters.AddWithValue("?", Me.zone.Text) 
cmd.ExecuteNonQuery() 

請你幫個忙,並開始使用這種方法,而不是「粘在一起」的麻煩長串SQL代碼(和脆弱的!)。

相關問題