C# 无法设置OracleCommand.BindByName=true
我升级到Oracle 12.1,从那时起,我的OracleCommand就不起作用了。我正在传递cmd.Parameters[Name].Value=username这样的参数;但获取异常的消息envlink:System.IndexOutOfRangeException:Invalid index-1对于此计数为0的OracleParameterCollection无效。我做了一些搜索,找到了OracleCommand.BindByName=true,但找不到方法BindByName。我正在使用System.Data.OracleClient版本4.0.0.0。 如何解决这个问题?那么,参数就是集合。若您试图按键获取元素,但该元素不存在,那个么您将得到一个无效的索引异常,您应该在尝试访问具有该名称的元素之前添加一个参数。集合参数包含方法AddWithtValue- 例如System.Data.OracleClient: 但是System.Data.OraceClient已弃用,Microsoft将不支持它。在中,您可以使用函数add来添加参数,而不是使用函数AddWithtValue在System.Data.OracleClient中添加参数的方式: 或 例如ODP.Net:C# 无法设置OracleCommand.BindByName=true,c#,.net,oracle,C#,.net,Oracle,我升级到Oracle 12.1,从那时起,我的OracleCommand就不起作用了。我正在传递cmd.Parameters[Name].Value=username这样的参数;但获取异常的消息envlink:System.IndexOutOfRangeException:Invalid index-1对于此计数为0的OracleParameterCollection无效。我做了一些搜索,找到了OracleCommand.BindByName=true,但找不到方法BindByName。我正在使
使用cmd.Parameters.AddWithValueName、用户名更新;但是,在调用“ProcedureName”时遇到异常,如ORA-06550:第1行第7列:PLS-00306:错误的参数数量或类型ORA-06550:第1行第7列:PL/SQL:语句ignored@Lara,我添加了如何使用参数的示例。如果代码无效,请显示代码。我正在尝试打开connectionstring,如conn=new OracleConnection\u conn;康涅狄格开放大学;但是获取OracleConnection.ConnectionString之类的异常是无效的。如何解决此问题?您应该设置正确的ConnectionString。有关如何构建它的更多信息,请参阅。省略tnsnames.ora也可以很好地工作。
cmd.Parameters.AddWithValue("Name", username);
var con = new OracleConnection(source);
using (con)
{
con.Open();
using (var cmd = con.CreateCommand())
{
cmd.CommandText = "SELECT :NAME FROM dual";
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.AddWithValue("NAME", "Hello World!");
using (var rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
string val = rdr.GetString(0);
MessageBox.Show(val);
}
}
}
}
cmd.Parameters.Add("Name", username);
cmd.Parameters.Add(
new OracleParameter("Name", OracleDbType.Varchar2, username, ParameterDirection.Input)
);
using (OracleConnection con = new OracleConnection(source))
{
con.Open();
using (var cmd = con.CreateCommand())
{
cmd.BindByName = true;
cmd.CommandText = "select :NAME from dual";
cmd.Parameters.Add("NAME", "Hello World!");
/*
command.Parameters.Add(
new OracleParameter("NAME", OracleDbType.Varchar2, "Hello World!", ParameterDirection.Input)
);
*/
using (var rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
string val = rdr.GetString(0);
MessageBox.Show(val);
}
}
}
}