习惯上,我喜欢直接把SQL语句通过连接拼写出来。
为测试,我们新建一Windos应用程序项目,在窗体中拉入一个DataGridView、2个TextBox(TxtID和TxtGrade)、2 个Label和一个Button控件。设计界面如图:
数据库里的表数据如图:
一、拼接SQL语句进行数据库查询
测试代码:连接拼写SQL语句
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'连接数据库
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\test.accdb;")
'打开数据库
conn.Open()
'生成命令
Dim cmd As New OleDbCommand()
cmd.CommandType = CommandType.Text
cmd.Connection = conn
cmd.CommandText = "SELECT gradeID, grade FROM gradetbl" _
& " WHERE gradeID=" & TxtID.Text & " AND grade='" & TxtGrade.Text & "';"
'执行命令
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = cmd
'填充DataTable
Dim dt As New DataTable
adapter.Fill(dt)
DataGridView1.DataSource = dt
'关闭数据库
conn.Close()
End Sub
测试1:查询ID为1,年级为“一年级”的数据,如图:
测试结果:
拼接得到的SQL语句:SELECT gradeID, grade FROM gradetbl WHERE gradeID=1 AND grade='一年级';
,如图:
测试2:恶意输入,如:ID输入“6 or 1=1”,年级输入“0’ or ‘1’='1 ”,如图