簡體   English   中英

ODP.NET參數化查詢不起作用

[英]ODP.NET Parameterised Query Not Working

我已經盡我所能在互聯網上找到的所有內容都可以正常使用。

我正在使用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")),
            };

}

如果我將參數替換為硬編碼值,則可以使用!

由於查詢未返回任何行,因此失敗並顯示“對關閉的對象無效的操作”。

有人可以幫忙嗎?

謝謝閱讀。

您是否已去這里下載ODP.NET的正確版本? ODP.NET主頁

我已經使用了12版本,它適用於11gr2。

轉到下載並單擊此處,使用適用於Visual Studio的Oracle開發人員工具下載ODAC。

確保您正確的幾件事。 oracle客戶端和ODP.NET版本必須具有相同的32位或64位。您不能將64位ODP與32位客戶端交叉,反之亦然。

如果以上正確,則可以。 我懷疑你是因為查詢工作進行了硬編碼。

可能是這個嗎? http://www.codeproject.com/Articles/208176/Gotcha-sharp-Using-Named-Parameters-with-Oracl

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM