【发布时间】:2018-03-01 11:30:14
【问题描述】:
我已经尝试了我在互联网上可以找到的所有方法来让它工作。
我正在使用 VS2013、C#、Oracle.ManagedDataAccess v4(尝试过 oracle.dataaccess.client v14)、oracle 11g。
我了解以下代码应该可以工作(我知道连接处理、使用等丢失,但我只是将其剥离)
public CustDetailsModel SelectCustDetails(string CustCode)
{
string sql;
OracleDataReader reader;
OracleConnection OraConn = OraConnection.GetConnection;
OraConn.Open();
sql = "SELECT CUSTOMER, NAME, POSTCODE FROM CUSTOMER WHERE CUSTOMER = :CUSTCODE";
OracleCommand cmd = new OracleCommand(sql, OraConn);
OracleParameter parameter = cmd.CreateParameter();
parameter.ParameterName = "CUSTCODE";
parameter.OracleDbType = OracleDbType.Varchar2;
parameter.Value = CustCode;
cmd.Parameters.Add(parameter);
reader = cmd.ExecuteReader();
reader.Read();
return new CustDetailsModel
{
Cust = reader.GetString(reader.GetOrdinal("CUSTOMER")),
CustName = reader.GetString(reader.GetOrdinal("NAME")),
CustPostCode = reader.GetString(reader.GetOrdinal("POSTCODE")),
};
}
如果我用硬编码值替换参数,它就可以工作!
由于查询未返回任何行,因此失败并显示“对已关闭对象的无效操作”。
有人可以帮忙吗?
感谢阅读。
【问题讨论】:
-
@SergeyMalyutin - 是的,在我引入参数之前,数据库连接没有问题。我想知道我是否有适用于 11gR2 的正确版本的 ODAC。