首页 > 解决方案 > 如何在 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

标签: vb.net

解决方案


您不能在 SQL 代码中使用参数作为标识符(表名、列名等);只为价值观。您别无选择,只能使用字符串连接。因此,您必须非常小心表名的来源。理想情况下,您将查询数据库以获取表名,然后让用户从该列表中选择一个。这样,您就可以保证不会注入恶意 SQL。


推荐阅读