当前位置:编程学习 > C#/ASP.NET >>

Linux下的Mono中运行Remoting, 无法通过Oracle的存储过程返回记录集

各位大侠,本人最近遇到一个很郁闷的问题:
在Windows平台下开发了一个Remoting 程序(控制台程序),用来访问Oracle数据库,在Windows平台下,Remoting 程序可以通过调用Oracle的存储过程返回数据集(主要是通过cursor类型的输出参数来实现)。由于客户要求所有的服务器必须运行于Linux下,所以考虑采用Mono(V2.4)下运行Remoting 程序,我运行的方式是直接在Windows平台下编译后,直接拷贝到Linux(Red Hat Enterprise)下运行。Remoting程序可以正常运行,但是返回的结果就有问题了,查询存储过程应该是有两个cursor类型的参数,也就是说在返回的Dataset中应该包含两个Table,在windows下,这些数据可以正常返回,而在Linuxe+Mono下运行,任何情况都返回返回一个空的Table,我甚至把存储过程中的过滤条件去掉,也就是说无论如何都会有数据返回,但是Remoting返回的数据集中仍然只有一个空的Table(有字段名字,没有记录)。网上查了很久也没有找到解决办法,只好在此项各位大侠求救了,我简单把Remoting中数据查询的方法贴到下面做个参考:
       private DataSet GetDataSetBySQL_T(string selectSQL, CommandType commandType, XmlDocument paramDoc)
        {
            OracleParameter[] parameters = ParameterConvertor.ConvertXmlToParameters(paramDoc == null ? null : paramDoc.DocumentElement);
            using (OracleConnection conn = this.GetConnection())
            {
                conn.Open();

                OracleCommand selectComm = new OracleCommand(selectSQL, conn);
                selectComm.CommandType = commandType;

                selectComm.Parameters.Clear();
                if (parameters != null && parameters.Length > 0)
                {
                    foreach (OracleParameter param in parameters)
                    {
                        selectComm.Parameters.Add(param);
                    }
                }

                DataSet ds = new DataSet();
                OracleDataAdapter adp = new OracleDataAdapter(selectComm); ;
                adp.Fill(ds);

                return ds;
            }
        }

--------------------编程问答-------------------- --------------------编程问答-------------------- 不懂。我的问题和这个差不多。关注 --------------------编程问答-------------------- 我试过用其他数据格式,把DataSet转换成xml string, 也就是用dataSet.GetXml()的方法返回,仍然没有数据,看来是没有把数据写入到dataset中,难道在mono中还不支持OracleDataAdapter.Fill(Dataset ds)的方法?在windows下,一点问题都没有。
反正初步肯定不是序列化的问题。

拜求给位大侠给指点方向了! --------------------编程问答-------------------- Mono 下还有比较多不兼容的地方(或者未完全实现的功能)。我打算把一个解析Schema文件的程序拿到Linux的Mono下运行,就发现它的实现和其他的Schema解析器不同。其他人正常,它就保持。Bug提交上去,也是死活不给答复。态度还不好。

--------------------编程问答-------------------- 你看看这里 http://mono-project.com/Oracle
也有那种第三方的连接Oracle的.NET组件,但是需要购买。 --------------------编程问答-------------------- 你好,不知道你的问题解决了么!?
我最近也遇到这个问题,不知有否指教~谢谢
补充:.NET技术 ,  Web Services
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,