Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分析参数化查询C时出错#_C#_Sql Parametrized Query - Fatal编程技术网

C# 分析参数化查询C时出错#

C# 分析参数化查询C时出错#,c#,sql-parametrized-query,C#,Sql Parametrized Query,在尝试解析参数化查询时,我不断遇到错误。 错误:错误中的令牌=@tableName 似乎变量一切正常,尝试传递字符串仍然相同 using (SqlCeCommand command = new SqlCeCommand("SELECT * FROM @tableName WHERE @columnName = @id", connection)) { command.Parameters.Add(new SqlCeParameter("ta

在尝试解析参数化查询时,我不断遇到错误。 错误:错误中的令牌=@tableName

似乎变量一切正常,尝试传递字符串仍然相同

using (SqlCeCommand command = new SqlCeCommand("SELECT * FROM @tableName WHERE @columnName = @id", connection))
            {
                command.Parameters.Add(new SqlCeParameter("tableName", tableName));
                command.Parameters.Add(new SqlCeParameter("columnName", column));
                command.Parameters.Add(new SqlCeParameter("id", id));
编辑1:

是的,这可能是查询数据库的错误方式。例如,如果您需要在不同的运行时间访问不同的表,那么最合适的方法是什么。我指的是访问数据库的类的体系结构

我试图使用它在不同的运行时访问两个表。我只是传递这三个变量并返回输出

如果我违反了规则,请道歉

编辑2:

对不起,我没有说清楚,但这是我的问题


运行应用程序时,在不同的时间访问不同的数据库表时,哪种体系结构(如果我可以这样称呼的话)更好?我是说你的解决办法是什么?是好是坏等等

我相信SqlCeCommand和SqlCommands的工作原理是相同的,因此参数必须以@开头:“@Name”进行传递

此外,查询中的“TableName”和“columnName”应该是Sql对象名,所以不要参数化它们

改为动态生成查询,然后传递过滤参数@id.
您可以尝试这样的方式:


不能在表名和列上放置参数。我还看到您正在使用SQL Compact edition。您可以在C#中设置命令,如下所示:

sqlCommand.CommandText = "SELECT * FROM " + yourtablename + " WHERE " + yourcolumnname+" LIKE @param";
sqlCommand.Parameters.Add("@param", SqlDbType.NVarChar).Value = paramVal + "%"; 

仅供参考,您应该知道此代码是开放的。

阅读此帖子:您没有违反规则,但如果您想知道方向,您必须告诉我们您想去哪里,我们不知道。而不是告诉我们您使用的解决方案。
sqlCommand.CommandText = "SELECT * FROM " + yourtablename + " WHERE " + yourcolumnname+" LIKE @param";
sqlCommand.Parameters.Add("@param", SqlDbType.NVarChar).Value = paramVal + "%";