在选择中带有参数的参数化查询返回无效数据

Posted

技术标签:

【中文标题】在选择中带有参数的参数化查询返回无效数据【英文标题】:Parameterized query with parameter in select returns invalid data 【发布时间】:2013-03-22 23:13:01 【问题描述】:

我有以下代码:

string connectionString = 
    "Provider=Microsoft.JET.OLEDB.4.0;" + 
    "data source=" + processProgramPath + ";";

using (OleDbConnection connection = new OleDbConnection(connectionString))

    connection.Open();
    using (OleDbCommand command = new OleDbCommand(
        "SELECT @Value " +
        "FROM BONDPARAMETERS " +
        "WHERE BONDPARAMETERS.SetName = @SetName", connection))
    
        command.Parameters.AddWithValue("@Value", value);
        command.Parameters.AddWithValue("@SetName", setName);               

        var result = command.ExecuteScalar();
        return result.ToString();
    

我期望得到的结果是 760。但是,我得到了 StartForce 列的标题。

值 = "启动力" setName = "450(18)-F-OE"

如果我将使用更改为:

using (OleDbCommand command = new OleDbCommand("SELECT "+value+" " +

它有效。什么给了?

提前致谢

【问题讨论】:

【参考方案1】:

您不能使用这样的参数动态构建 SQL。看到这个问题:Using C# SQL Parameterization on Column Names

【讨论】:

那么我的解决方法会是一种有效的方法吗?还是像我觉得的那样俗气?

以上是关于在选择中带有参数的参数化查询返回无效数据的主要内容,如果未能解决你的问题,请参考以下文章

参数中带有 IEnumerable 的 C# OData Web API POST 端点返回错误 400,输入无效

Postman入门-参数化

where in 的参数化查询实现

参数化数据驱动

PDO 参数化与非参数化查询速度

UNION ALL 参数化查询