我嘗試了一切可以在互聯網上找到的工作。我使用VS2013,C#,Oracle.ManagedDataAccess v4(試用oracle.dataaccess.client v14),oracle 11g。ODP.NET參數化查詢不起作用
我明白下面的代碼應該工作(我知道的連接處理,usings等丟失,但我剛剛剝回)
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")),
};
}
如果我硬編碼的值來替換參數,它的作品!
由於查詢沒有返回任何行,因此對「關閉對象的無效操作」失敗。
有人可以幫忙嗎?
感謝您的閱讀。
你有沒有檢查過這個http://stackoverflow.com/questions/17062954/error-with-oracledatareader-error-invalid-operation-the-connection-is-closed? – 2014-10-10 16:05:07
@SergeyMalyutin - 是的,在引入參數之前,數據庫連接沒有問題。我想知道是否有適合11gR2的正確版本的ODAC。 – radiator 2014-10-10 16:31:10