SunGard Investran OLE DB提供程序用法

时间:2014-08-21 07:58:02

标签: c# .net oledb

我需要从我的C#应用​​程序中使用OLEDB提供程序(对于SunGard Investran),并从带有参数的报表中获取数据。我能够连接数据库但无法获取数据。应用程序崩溃时出现异常代码c0000005。请提供一些如何使用它的指导。

我在64位win服务器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);


            }
        }

2 个答案:

答案 0 :(得分:0)

命令文本中没有真正的命令...

cmd.CommandText = "select * from SomeTable where ... ";

如果“ReportFolder”是数据库中的表,而“ReportName”是列,那么如果您想要所有记录,则不需要WHERE子句。

cmd.CommandText = "select ReportName from ReportFolder";

现在,如果要添加参数(例如报告类型等),请确保正确参数化它们,但我不熟悉数据库的“占位符”语法。例如,在Visual FoxPro(VFP)中,“?”是一个占位符,在SQL-Server中它的“@”,在SyBase Advantage中它的“:”如查询就会变成

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

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

答案 1 :(得分:0)

我得到了语法。它是OLEDB提供商特有的。以下是其他人使用它的语法。

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

也可以像这样添加参数。

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