Sql INSERT INTO语句(vb.net)中的语法错误
在vb中运行项目时收到错误:[insert into语句中的语法错误]Sql INSERT INTO语句(vb.net)中的语法错误,sql,vb.net,Sql,Vb.net,在vb中运行项目时收到错误:[insert into语句中的语法错误] 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.T
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
表名和第一个括号之间是否缺少空格 最好的方法可能是复制sqltambah变量的内容,自己运行insert语句,看看是否能获得有关错误位置的更多信息
看看这个:使用参数化查询 例如,查询如下所示:
INSERT INTO anggota
(no,
nis,
nama,
kelas,
jenis_kelamin,
tempat_lahir,
tanggal_lahir)
VALUES (@no,
@nis,
@nama,
@kelas,
@jenis_kelamin,
@tempat_lahir,
@tanggal_lahir)
然后调整代码:
cmd.Parameters.AddWithValue("@No", Tno.Text)
cmd.Parameters.AddWithValue("@nis", Tnis.Text)
cmd.Parameters.AddWithValue("@Nama", Tnama.Text)
cmd.Parameters.AddWithValue("@Kelas", Tkelas.Text)
cmd.Parameters.AddWithValue("@Jenis_kelamin", CBjk.Text)
cmd.Parameters.AddWithValue("@Tempat_lahir", Tt4lahir.Text)
cmd.Parameters.AddWithValue("@Tanggal_lahir", ttgllahir.Text)
cmd = New OleDbCommand(sqltambah, conn)
cmd.ExecuteNonQuery()
值中的某个字符可能会创建无效的sql语句。然而,通过串联用户输入来生成sql语句是一件非常危险和邪恶的事情,因为它打开了一个简单的、众所周知的、有文档记录的安全问题——sql注入的大门 处理参数的唯一好方法是使用参数化SQL查询
有关更多详细信息,请参见此部分。通过连接建立查询字符串,除了SQL注入风险外,还可能出现语法错误。改为使用参数化查询。在连接后,您能提供sqltambah的值吗?否,nis,Nama,Kelas,Jenis_kelamin,Tempat_lahir,Tanggal_lahir这是insert中的7列query@meda我在哪里写的代码cmd。。。是否在值中?缺少空格不是语法错误,没有问题