C# OracleParameterCollection给了我奇怪的错误
我的代码C# OracleParameterCollection给了我奇怪的错误,c#,oracle,C#,Oracle,我的代码 Error CS1729 'OracleParameterCollection' does not contain a constructor that takes 0 arguments 如果StoredProcedureCall.GenerateStoredProcedureCall()是您自己定义的函数,则不应将OracleParameterCollection列表传递给它。您可以创建简单的字典并传递到此函数。 然后在函数内部,您可以将参数直接添加到命令中。i、 e
Error CS1729 'OracleParameterCollection' does not contain a constructor that takes 0 arguments
如果
StoredProcedureCall.GenerateStoredProcedureCall()
是您自己定义的函数,则不应将OracleParameterCollection
列表传递给它。您可以创建简单的字典并传递到此函数。
然后在函数内部,您可以将参数直接添加到命令中。i、 e:
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;
}
}
不需要创建OracleParameterCollection的新实例,这是什么语言/开发环境?它是C语言的。我用我的问题标记了这个问题,它不是这个类的预期用法,通常你会把参数添加到要执行的命令中。我如何把Oracle参数的集合传递给我的类?考虑编辑你的问题并添加A,这样你就可以得到更好的帮助。照目前的情况,我建议使用一个方法来添加一个参数,并根据需要多次调用它。谢谢。问题是将参数传递到我的GenerateStoredProcedureCall中。我们计划使用的SP超过45个。有些是1个参数(即ParameterDirection.Output),有些则多达17个参数。有些传递值(如“John”),而另一些传递日期。所以我想用所有配置的选项定义参数,然后将其传递给我定义的函数以执行相应的任务
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;
}
}
foreach(var i in params)
{
oraCommand.Parameters.Add(new OracleParameter(i.key, i.val));
}