必须使用c#paramaterized查询声明表变量错误

时间:2018-01-30 06:49:40

标签: c# sql-server

我收到SQL语句的错误:

  

必须声明表变量@table

我不知道应该如何修复它。以下是进行查询的部分的代码(例如3是通信,4是无线电:基本,5是45,6是5,7是0)。

string table = "Skills" + info[3];
SqlCommand cmd = new SqlCommand("use palladium; insert into @category(skill, basepercent, lvlpercent, special) values ( @skillname , @base , @lvl , @special);");
cmd.Parameters.AddWithValue("@category", table);
cmd.Parameters.AddWithValue("@skillname", info[4]);
cmd.Parameters.AddWithValue("@base", info[5]);
cmd.Parameters.AddWithValue("@lvl", info[6]);
cmd.Parameters.AddWithValue("@special", info[7]);
general.dbsend(cmd, connection);

1 个答案:

答案 0 :(得分:2)

您不能将表名作为静态查询中的变量。您可以在动态查询中,通过格式化查询中的表名而不是将其作为参数提供。

SqlCommand cmd = new SqlCommand("use palladium; insert into ["+table.Replace("]","]]")+"](skill, basepercent, lvlpercent, special) values ( @skillname , @base , @lvl , @special);");

替换位防止SQL注入。