将数据集从Oracle传递到C#会给我一个指令指针错误

时间:2016-11-17 15:11:51

标签: c# oracle12c

我有以下C#代码块将变量传递到Oracle 12c过程并返回数据集:

    public void Show_Data()
    {
        try
        {
            OracleConnection conn = GetConnection();
            {
                conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnCST"].ToString();

                OracleCommand cmd3 = new OracleCommand();
                cmd3.CommandType = CommandType.StoredProcedure;
                cmd3.CommandText = "CST_FEEDBACK";
                cmd3.Connection = conn;

                cmd3.Parameters.Add("LineID", OracleType.Number).Value = hLineID.Value;
                cmd3.Parameters.Add("Emp_out", OracleType.Cursor).Direction = ParameterDirection.Output;

                //connection2.Open();

                var SearchAdapter = new OracleDataAdapter(cmd3);
                var ds = new DataSet();
                SearchAdapter.Fill(ds);

                ResponseRepeater.DataSource = ds;
                ResponseRepeater.DataBind();
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

    }

当代码到达行var ds = new Dataset();时,它失败并显示以下消息:

  

无法获取局部变量或参数的值,因为它是   此指令指针不可用,可能是因为它有   被优化了。

有人可以告诉我这意味着什么和/或如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

调试由编译器优化的代码时,经常会出现此问题。

切换到Build Configuration" Debug",或者如果已经激活,则转到Project - >属性 - >选项卡[Build],查找[x]优化代码,然后取消选中它:

Optimize-Code.png

答案 1 :(得分:0)

请尝试使用Oracle托管数据访问dll(https://www.nuget.org/packages/Oracle.ManagedDataAccess/)进行oracle连接。并使用任何oracle助手类(http://read.pudn.com/downloads153/sourcecode/windows/dotnet/671399/SQL%2BOleDb%2BOracle%2BNpg_helper/SqlHelper/OracleHelper.cs__.htm)。现在您可以使用正常的SQL查询。

using (SqlCommand command = new SqlCommand("select * from OrderProduct where OrderProductID=@folder", conn))
{
    command.Parameters.Add(new SqlParameter("@folder", folder));

    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
            order[1] = Convert.ToString(reader.GetInt32(1));
    }
}

如果您想更改为Collection,请使用Net上的一些通用转换DataRow to Collection代码。