OracleParameterCollection дает мне странные ошибки - PullRequest
0 голосов
/ 27 февраля 2020
Error   CS1729  'OracleParameterCollection' does not contain a constructor that takes 0 arguments   

Мой код

OracleParameterCollection oracleParameter = new OracleParameterCollection(); <====== How do I create one?
oracleParameter.Add("User_Name", OracleDbType.Char).Value = UserName;
oracleParameter.Add("Entered_Password", OracleDbType.Char).Value = Password;
oracleParameter.Add("T1_Cursor", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
DataTable employeeDataTable = StoredProcedureCall.GenerateStoredProcedureCall(_connectionString, "GET_USER_INFO_BY_CREDENTIALS", oracleParameter, out temp);

Метод в классе

    public DataTable GenerateStoredProcedureCall(String _connectionString, String StoredProcedure_Name, OracleParameterCollection ParameterNames, out String ResultFromDatabaseOperation)
    {
        DataTable dt = new DataTable();
        try
        {
            using (OracleConnection cn = new OracleConnection(_connectionString))
            {
                OracleDataAdapter da = new OracleDataAdapter();
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = cn;
                cmd.CommandText = StoredProcedure_Name;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.BindByName = true;
                cmd.Parameters.Add(ParameterNames);                        
                da.SelectCommand = cmd;
                da.Fill(dt);
                ResultFromDatabaseOperation = "";
                if (cmd.Parameters["RowCount"].Value != null)
                {
                    ResultFromDatabaseOperation = cmd.Parameters["RowCount"].Value.ToString();
                }
                if (cmd.Parameters["RowCount"].Value == null)
                {
                    ResultFromDatabaseOperation = "0";
                }                    
                return dt;
            }
        }
        catch (OracleException ex)
        {
            ResultFromDatabaseOperation = "";
            Console.BackgroundColor = ConsoleColor.Red;
            Console.ForegroundColor = ConsoleColor.Black;
            Console.WriteLine(ex.StackTrace.ToString());
            return dt;
        }
    }

1 Ответ

0 голосов
/ 27 февраля 2020

Если StoredProcedureCall.GenerateStoredProcedureCall() является вашей собственной определенной функцией, то вам не следует передавать ей список OracleParameterCollection. Вы можете создать простой словарь и перейти к этой функции. И тогда внутри функции вы можете добавить параметр непосредственно в команду. т.е.:

foreach(var i in params)
{
    oraCommand.Parameters.Add(new OracleParameter(i.key, i.val));
}

Нет необходимости создавать новый экземпляр OracleParameterCollection

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...