【发布时间】:2015-02-15 13:12:23
【问题描述】:
当我在 vb 中运行我的项目时收到一个错误:[insert into statement 中的语法错误]
Private Sub Bsimpan_Click(sender As Object, e As EventArgs) Handles Bsimpan.Click
If Tno.Text = "" Or Tnis.Text = "" Or Tnama.Text = "" Or Tkelas.Text = "" Or CBjk.Text = "" Or Tt4lahir.Text = "" Or ttgllahir.Text = "" Then
MsgBox("Data Belum Lengkap")
Exit Sub
Else
Call koneksi()
cmd = New OleDbCommand("select * from Anggota where nis='" & Tnis.Text & "'", conn)
rd = cmd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
Dim sqltambah As String = "insert into Anggota(No,nis,Nama,Kelas,Jenis_kelamin,Tempat_lahir,Tanggal_lahir) values " & _
"('" & Tno.Text & "', '" & Tnis.Text & "', '" & Tnama.Text & "', '" & Tkelas.Text & "', '" & CBjk.Text & "', '" & Tt4lahir.Text & "', '" & ttgllahir.Text & "')"
cmd = New OleDbCommand(sqltambah, conn)
cmd.ExecuteNonQuery()
Call kosongkan()
Call tampilkan()
Tno.Focus()
Else
Dim sqledit As String = "update Anggota set " & _
"NIS='" & Tnis.Text & "', " & _
"Nama='" & Tnama.Text & "', " & _
"Kelas='" & Tkelas.Text & "', " & _
"Jenis_kelamin='" & CBjk.Text & "', " & _
"Tempat_lahir='" & Tt4lahir.Text & "', " & _
"Tanggal_lahir='" & ttgllahir.Text & "'"
cmd = New OleDbCommand(sqledit, conn)
cmd.ExecuteNonQuery()
Call kosongkan()
Call tampilkan()
End If
End If
End Sub
【问题讨论】:
-
除了 SQL 注入风险外,通过连接构建查询字符串总是会导致语法错误。改用参数化查询。
-
能否提供连接后sqltambah的值?