以下是我的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忽略我的查询参数并只执行查询?
答案 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;
}