如何在执行SQL查询时忽略参数?

时间:2017-07-10 14:39:39

标签: c# ado.net

以下是我的SQL查询:

select * 
from Table 
where col1 = @param1 and col2 = @param2

现在我想执行该SQL查询,但我只想从查询中获取列,而不是任何记录。

我知道我可以通过查找和删除所有参数化参数来操纵这个SQL查询,但我只是认为有任何方法可以忽略所有这些参数并执行(select * from Table)。

这就是我现在正在做的事情:

TCommand cmd = new TCommand();
cmd.CommandText = sqlQuery;
cmd.Connection = connection;

using (var reader = cmd.ExecuteReader())
{
    reader.Read();

    var columns = reader.GetSchemaTable().AsEnumerable()
                        .Select(col => col["ColumnName"].ToString())
                        .ToArray();

    return columns;
}

我收到此错误:

  

必须声明标量变量“@ param1”

我想在执行SQL查询时忽略此参数。有没有办法告诉ADO.NET忽略我的查询参数并只执行查询?

1 个答案:

答案 0 :(得分:0)

不,您不能忽略查询参数。如果您需要使用上面的查询来获取列名,您应该自己操作sql。例如,您可以忽略任何条件,例如;

string sqlQuery="select * from Table where col1 = @param1 and col2 = @param2";
var newQuery = a.Substring(0, a.IndexOf("where"));

TCommand cmd = new TCommand();
cmd.CommandText = newQuery;
cmd.Connection = connection;

using (var reader = cmd.ExecuteReader())
{
    reader.Read();

    var columns = reader.GetSchemaTable().AsEnumerable()
                        .Select(col => col["ColumnName"].ToString())
                        .ToArray();

    return columns;
}