vb.net - 如何在 SQL 命令中使用变量作为表名
问题描述
请帮助,谢谢: SQL Server 的参数化查询假设我们有一个包含两个项目的列表,list(0) = "tablename1", list(1) = "tablename2"
我们如何将 list(0) 或 list(1) 传递给sqlcommand 例如“Select * from @list(0)”?错误是关于@Name 上的声明,我不知道。
伪代码如下:
1. strQuery = "Select * From @Name"
2.
3. sqlSQLCon = New SqlConnection(strSQLConn)
4.
5. Dim sqlSQLCommand As New SqlCommand(strQuery, sqlSQLCon)
6.
7. sqlSQLCommand.Parameters.AddWithValue("Name", list(0))
8.
9.
10. sqlSQLCon.Open()
11.
12. Dim sqlSQLReader As SqlDataReadersqlSQLCommand.ExecuteReader()
13.
14. If sqlSQLReader.HasRows Then
Do something
End If
解决方案
您不能在 SQL 代码中使用参数作为标识符(表名、列名等);只为价值观。您别无选择,只能使用字符串连接。因此,您必须非常小心表名的来源。理想情况下,您将查询数据库以获取表名,然后让用户从该列表中选择一个。这样,您就可以保证不会注入恶意 SQL。
推荐阅读
- zabbix - 如何为连续 3 个 Windows 登录失败事件创建警报?
- java - 为什么不能使用 Apache POI 在这个 excel 文件中写入数据?
- amazon-web-services - 无法再连接到 AWS Windows 或 Linux 实例
- variables - Twilio - 使用经典函数如何创建和更新持续存在的变量?
- api - 使用 Checkpoint API 创建 Cpmi 用户
- php - mysql中列的SUM计算错误
- java - 我可以在 IntelliJ 显示的 Javadocs 中增加段落周围的填充吗?
- javascript - 将下一步按钮添加到分步加载栏
- javascript - 卡在 React 应用程序中的基本 Javascript 循环和数组
- c# - 无法等待“无效”