C# 带文本命令类型的ORA-01001

C# 带文本命令类型的ORA-01001,c#,sql,oracle,C#,Sql,Oracle,我对一些C代码有一个非常奇怪的问题。 我有这样的方法: public static void LoadDataToList(string viewName, ListBox lbxToLoad) { try { OracleCommand cmd = new OracleCommand(); cmd.Connection = DBConnection.EnsureConnectionToDB(); cmd.CommandText =

我对一些C代码有一个非常奇怪的问题。 我有这样的方法:

public static void LoadDataToList(string viewName, ListBox lbxToLoad)
{
    try
    {
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = DBConnection.EnsureConnectionToDB();
        cmd.CommandText = "select * from " + viewName;
        cmd.CommandType = CommandType.Text;

        OracleDataReader dr = cmd.ExecuteReader();

        List<CustomTypes.ListBoxItems> listItems = new List<CustomTypes.ListBoxItems>();

        while (dr.Read())
        {
            var itemValue = dr.GetOracleValue(0);
            var itemText = dr.GetOracleValue(1);
            listItems.Add(new CustomTypes.ListBoxItems() { Value = itemValue, Text = itemText });
        }

        lbxToLoad.DisplayMemberPath = "Text";
        lbxToLoad.ItemsSource = listItems;
        lbxToLoad.IsEnabled = true;

        dr.Dispose();
        cmd.Dispose();
    }
    catch
    {
        MsgHandling(3);
    }
}

cmd.Parameters.Clear()
是无用的,因为您根本不使用任何参数。我知道,但我尝试执行所有操作,但仍然出现此错误…
CommandType。文本应为默认值。你能发布视图定义吗?很可能
OracleDataReader
对象正在引擎盖下使用光标;这是一次检索一行的典型方法。如果一次打开的游标太多,也会发生此错误:连接是否已打开?在创建reader
cmd.Connection.open()之前尝试打开它
select distinct
      ti.value as id
    , ti.value as value
from
    x.table1 t
  , x.table2 ti
WHERE
    t.t1_num= ti.t2_num AND ti.type_id = 20003
ORDER by
    ti.value asc;