1

我的团队中有 4 名开发人员,其中 2 人可以毫无问题地从我们的 .NET 3.5 asp.net webapp 查询 Oracle 数据。但是另外两个在相同的查询中没有得到任何结果。在他们的情况下,如果他们用硬编码值替换参数,他们就会得到结果。例如:

select * from sometable where userid = :userid

(这适用于我们 2 个人,但不适用于其他 2 个人)

select * from sometable where userid = '12345'

(这对每个人都有效)

我们都在执行相同的代码,相同的查询。知道为什么参数化查询对我们中的某些人没有返回任何内容吗?

4

2 回答 2

1

我向你保证,它与代码无关。在它不起作用的两台机器上,您要么有错误的数据访问组件。或者,.NET 吸收了对完全错误对象的引用,这些对象不会破坏编译时间,但它们不支持绑定变量。如果可以,请检查哪些库已加载到您的域对象中,很明显您正在加载完全错误的库。

于 2013-07-30T20:58:59.050 回答
0

如果没有看到代码,我认为这可能是参数类型问题。Oracle 是一个带有参数的 PIA。我之前遇到过 DateTime 与 TimeStamp 的问题。 Oracle日期参数查询不起作用?

您是否使用特定的 Oracle 类型?

您是否每次都传入相同的值类型?还是一个和 int 和另一个是双重的?

public IDbDataParameter CreateParameter(IDbCommand cmd, string name, DbType type) {
    OracleParameter p = (OracleParameter)cmd.CreateParameter();
    p.ParameterName = name;
    p.OracleDbType = DBTypeToOracle(type);
    if (p.OracleDbType == OracleDbType.TimeStampLTZ) {
        p.Precision = 3;

    }
    return p;
}
于 2013-07-30T22:39:53.793 回答