我收到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);
答案 0 :(得分:2)
您不能将表名作为静态查询中的变量。您可以在动态查询中,通过格式化查询中的表名而不是将其作为参数提供。
SqlCommand cmd = new SqlCommand("use palladium; insert into ["+table.Replace("]","]]")+"](skill, basepercent, lvlpercent, special) values ( @skillname , @base , @lvl , @special);");
替换位防止SQL注入。