@para附近的语法不正确,必须声明表变量@para SQL c#

CularBytes

我将INFORMATION_SCHEMA.TABLES加载到列表框中。我让用户选择表,然后在它旁边的列表框中显示该表的列。我只是得到这样的talbe名称:

tableName = lbTables.GetItemText(lbTables.SelectedItem);

现在获取列,这有效:

SqlCommand allTables = new SqlCommand("SELECT * FROM "+tableName+";", conn);

这是行不通的:

SqlCommand allTables = new SqlCommand("SELECT * FROM @0;", conn);
allTables.Parameters.AddWithValue("@0", tableName);

其次,我尝试在同一张表中插入新行:

SqlCommand comm = new SqlCommand("INSERT INTO [dbo.][@0] (@1) VALUES ('@2')",conn);
comm.Parameters.AddWithValue("@0", tableName);
comm.Parameters.AddWithValue("@1", columnName);
comm.Parameters.AddWithValue("@2", someValue);

同样,hardcoridingtableName和'columnName'可以工作。

对于tableName,我已经尝试过了:

SqlParameter typeTable = comm.Parameters.AddWithValue("@0", tableName);
typeTable.SqlDbType = SqlDbType.Structured;
typeTable.TypeName = "dbo." + tableName;

但这给了我一个错误:Must declare the table variable @0我现在在这个问题上花了很多时间,但是我还没有找到正确的答案,尽管如此,我还是会继续寻找...

编辑:经过一番评论后,我发现我不知道参数只能用于INSERRT / UPDATE和WHERE子句中的VALUES。因此,我正在寻找一种“ SQL注入安全”方法来动态选择表和列。

SmartDev

表名必须是静态的。您不能在SQL中将变量作为表名传递:

用这个:

SqlCommand comm = new SqlCommand(String.Format("INSERT INTO [dbo][{0}] ({1}) VALUES ('@val')", tableName, columnName),conn);
comm.Parameters.AddWithValue("@val", someValue);

在SQL中,您可以使用以下方法实现此目的sp_executesql

declare @query nvarchar(4000) = 'INSERT INTO [dbo][' + @tableName + '] (' + @columnName + ') VALUES (@p)'
declare @Params nvarchar(500) = '@v nvarchar(10)'
execute dbo.sp_executesql @query, @params, @p = 'someValue'

但是您需要对此非常谨慎,并检查您的tableNamecolumnName变量,以避免SQL注入

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

','附近的语法不正确。SQL Server和C#

来自分类Dev

')'附近的语法不正确。在sql的变量声明中

来自分类Dev

''.C#附近的语法不正确

来自分类Dev

''C#附近的语法不正确

来自分类Dev

c# sql 命令中的语法不正确

来自分类Dev

在C#代码中执行SQL语句会产生错误“关键字'ON'附近的语法不正确”

来自分类Dev

[SQL Server]表附近语法不正确

来自分类Dev

关键字“ Table” C#SQL附近的语法不正确

来自分类Dev

'+'附近的语法不正确-SQL / TSQL

来自分类Dev

')'SQL SERVER附近的语法不正确

来自分类Dev

';'附近的语法不正确 sql

来自分类Dev

SQL:“ =”附近的语法不正确

来自分类Dev

附近的 SQL 语法不正确

来自分类Dev

SQL Server:“@”附近的语法不正确

来自分类Dev

SQL“','附近的语法不正确”

来自分类Dev

Visual Studio 2017 C# 中的本地 SQL Server 数据库(关键字“FROM”附近的“语法不正确”)

来自分类Dev

尝试在C#中保存存储过程时表附近语法不正确

来自分类Dev

尝试在C#中保存存储过程时表附近语法不正确

来自分类Dev

通过python脚本的SQL语法(“,”附近的语法不正确)

来自分类Dev

通过python脚本的SQL语法(“,”附近的语法不正确)

来自分类Dev

C#中的T-SQL语句中的语法不正确

来自分类Dev

'JSON'附近的语法不正确-SQL Server 2016

来自分类Dev

SQL例外:“索引”附近的语法不正确

来自分类Dev

SQL Server''。'附近的语法不正确的异常。'?

来自分类Dev

T-SQL错误:“ +”附近的语法不正确

来自分类Dev

SQL SERVER sp_executesql'''附近的语法不正确

来自分类Dev

使用动态SQL时附近的语法不正确

来自分类Dev

SQL存储过程'-'附近的语法不正确

来自分类Dev

SQL Server'11'附近的语法不正确

Related 相关文章

  1. 1

    ','附近的语法不正确。SQL Server和C#

  2. 2

    ')'附近的语法不正确。在sql的变量声明中

  3. 3

    ''.C#附近的语法不正确

  4. 4

    ''C#附近的语法不正确

  5. 5

    c# sql 命令中的语法不正确

  6. 6

    在C#代码中执行SQL语句会产生错误“关键字'ON'附近的语法不正确”

  7. 7

    [SQL Server]表附近语法不正确

  8. 8

    关键字“ Table” C#SQL附近的语法不正确

  9. 9

    '+'附近的语法不正确-SQL / TSQL

  10. 10

    ')'SQL SERVER附近的语法不正确

  11. 11

    ';'附近的语法不正确 sql

  12. 12

    SQL:“ =”附近的语法不正确

  13. 13

    附近的 SQL 语法不正确

  14. 14

    SQL Server:“@”附近的语法不正确

  15. 15

    SQL“','附近的语法不正确”

  16. 16

    Visual Studio 2017 C# 中的本地 SQL Server 数据库(关键字“FROM”附近的“语法不正确”)

  17. 17

    尝试在C#中保存存储过程时表附近语法不正确

  18. 18

    尝试在C#中保存存储过程时表附近语法不正确

  19. 19

    通过python脚本的SQL语法(“,”附近的语法不正确)

  20. 20

    通过python脚本的SQL语法(“,”附近的语法不正确)

  21. 21

    C#中的T-SQL语句中的语法不正确

  22. 22

    'JSON'附近的语法不正确-SQL Server 2016

  23. 23

    SQL例外:“索引”附近的语法不正确

  24. 24

    SQL Server''。'附近的语法不正确的异常。'?

  25. 25

    T-SQL错误:“ +”附近的语法不正确

  26. 26

    SQL SERVER sp_executesql'''附近的语法不正确

  27. 27

    使用动态SQL时附近的语法不正确

  28. 28

    SQL存储过程'-'附近的语法不正确

  29. 29

    SQL Server'11'附近的语法不正确

热门标签

归档