VB.NET学习笔记:ADO.NET操作ACCESS数据库——执行含参数SQL语句或存储过程,防止SQL注入攻击

本文详细介绍了如何在VB.NET中使用ADO.NET执行含参数SQL语句和ACCESS存储过程,以此防止SQL注入攻击。通过实例展示了如何设置占位符、添加参数,并讨论了不同类型的Add方法。最后,探讨了ACCESS中的存储过程限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

习惯上,我喜欢直接把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 ”,如图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值