C# SunGard Investran OLE DB提供程序使用情况

C# SunGard Investran OLE DB提供程序使用情况,c#,.net,oledb,C#,.net,Oledb,我需要从我的C应用程序中使用SunGard Investran的OLEDB提供程序,并从带有参数的报告中获取数据。我能够连接数据库,但无法获取数据。应用程序崩溃,异常代码为c0000005。请提供一些关于如何使用此功能的指导 我在64位win server 2008 R2上运行此程序。 这是我正在使用的代码。它在获取数据的最后一行崩溃 string connect = "Provider=ftiRSOLEDB.RSOLEDBProvider;Password=xxxxxxxx;User ID=x

我需要从我的C应用程序中使用SunGard Investran的OLEDB提供程序,并从带有参数的报告中获取数据。我能够连接数据库,但无法获取数据。应用程序崩溃,异常代码为c0000005。请提供一些关于如何使用此功能的指导

我在64位win server 2008 R2上运行此程序。 这是我正在使用的代码。它在获取数据的最后一行崩溃

string connect = "Provider=ftiRSOLEDB.RSOLEDBProvider;Password=xxxxxxxx;User ID=xxxxxx;Initial Catalog=xxxx;Data Source=xxxxxx;";
        using (OleDbConnection conn = new OleDbConnection(connect))
        {
            using (OleDbCommand cmd = new OleDbCommand())
            {
                cmd.Connection = conn;

                cmd.CommandText = "[ReportFolder].[ReportName]";
                //conn.Open();
                OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
                DataSet ds = new DataSet();
                adapter.Fill(ds);


            }
        }

您没有来自命令文本的实际命令

cmd.CommandText = "select * from SomeTable where ... ";
如果ReportFolder是数据库中的表,ReportName是列,那么如果需要所有记录,则不需要WHERE子句

cmd.CommandText = "select ReportName from ReportFolder";
现在,如果您想添加参数,例如报告类型或其他什么,请确保正确地参数化它们,但我不熟悉数据库的占位符语法。例如,在visualfoxprovfp中?是一个占位符,在SQL Server中是@,在SyBase中是它的优势:例如查询将成为

cmd.CommandText = "select * from YourTable where Something = @someParmToApply";
cmd.Parameters.Add( "someParmToApply", "this thing" );

然后继续执行查询。。。如果您有多个参数,只需确保它们与查询中显示的顺序相同即可。。。这使它更容易理解。

我知道了语法。它是特定于OLEDB提供商的。下面是语法,以防其他人使用它

cmd.CommandText = "\"ReportFolder\".\"ReportName\" FLAGS[/SILENT]";
也可以这样添加参数

cmd.CommandText = "\"ReportFolder\".\"ReportName\" \"ParamName=value\" FLAGS[/SILENT]";

您需要添加崩溃的代码片段。如果没有它,将很难为您提供帮助。我已经尝试使用select*from ReportFolder.ReportName。ReportName是表名,ReportFolder是架构。它引发oledb异常,消息“ftiRSOLEDB.RSOLEDBProvider”失败,没有可用的错误消息,结果代码:-21472209410x80040233。