繁体   English   中英

必须使用C#参数化查询声明表变量错误

[英]Must declare table variable error with c# paramaterized query

我收到一条SQL语句错误:

必须声明表变量@table

我不知道该如何解决。 这是进行查询的部分的代码(例如3是Communications,4是Radio:basic,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);

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

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

替换位可防止SQL注入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM