无法从数据库中检索数据。详细信息:使用ASP.ET在Crystal Reports中使用[数据库供应商代码:1370]

时间:2015-01-14 06:51:21

标签: c# mysql asp.net crystal-reports

我已经搞砸了很多,但没有找到任何解决方案。 我使用Visual Studio 2012与My Sql作为数据库和Crystal报表。 我在WINDOWS SERVER 2008上部署了Web应用程序,当我从远程访问它时,它会给出以下错误消息,如下面的屏幕所示。

enter image description here

我使用以下代码

    string databaseName = "hr";
        string serverName = "192.168.137.6";
        string userID = "userID";
        string pass = "xxxxxxxxxxx";
    protected void btn_search_Click(object sender, EventArgs e)
        {
            CrystalReportViewer1.Visible = true;

            ReportDocument reportDocument = new ReportDocument();
            string reportPath = Server.MapPath(@"~/GeneralEmpReports/test.rpt");
            reportDocument.Load(reportPath);
            reportDocument.SetParameterValue("D", tbx_ddoCode.Text.ToUpper());
            reportDocument.SetDatabaseLogon(userID, pass, serverName, databaseName);
            CrystalReportViewer1.ReportSource = reportDocument;
        }

此处我想补充一点,只有 存储过程 会给我上述错误,如果我从 < / strong>然后没有错误并且执行完美。我通过Navicat工具(用于mysql的GUI管理工具)检查了存储过程,它工作正常。

我在服务器上通过控制面板添加了以下连接==&gt;管理工具==&gt;数据源(ODBC),如下图所示。 enter image description here

1 个答案:

答案 0 :(得分:0)

经过大量搜索,我发现我在 服务器名称 中犯了错误, 服务器名称应为 DSN 名称不是 IP地址 。在生产服务器上创建 系统DSN 名称,与开发计算机中给出的名称相同,如下所示。

enter image description here

数据来源名称: DSN_Name

TCP / IP服务器:在开发PC中将其空白表示 localhost ,但在开发服务器中提供IP地址。

用户:用户名

Paswword:密码

数据库:数据库名称

以下是可以正常使用的代码。

 string databaseName = "hr";
    string serverName = "hr_domain"; // DSN Name
    string userID = "xxxxxxx";
    string pass = "xxxxxxxx";
    protected void btn_search_Click(object sender, EventArgs e)
    {
        CrystalReportViewer1.Visible = true;
ReportDocument reportDocument = new ReportDocument();
        string reportPath = Server.MapPath(@"~/GeneralEmpReports/test.rpt");
        reportDocument.Load(reportPath);
        reportDocument.SetDatabaseLogon(userID, pass, serverName, databaseName);
        reportDocument.SetParameterValue("D", tbx_ddoCode.Text.ToUpper());
        CrystalReportViewer1.ReportSource = reportDocument;
    }