如何通过不带DSN或数据集的C#代码直接将Crystal Reports连接到MySQL
如何在不使用DSN或使用C#的预加载数据集的情况下将Crystal Report(VS 2008 basic)连接到MySQL DB?如何通过不带DSN或数据集的C#代码直接将Crystal Reports连接到MySQL
我需要在几个地方安装程序,所以我必须更改连接参数。我不想在每个地方创建DSN,也不想预先加载DataSet并将其传递给报表引擎。我使用nhibernate来访问数据库,因此创建和填充额外的DS将需要两倍的工作量和稍后的额外维护时间。我认为最好的选择是让水晶报表引擎通过ODBC自己连接到MySQL服务器。
我设法建立在使用数据库专家报告设计(VS2008)的连接,创建ODBC(RDO)连接,并输入该连接字符串
“DRIVER = {MySQL的ODBC 5.1驱动}; SERVER = myserver.mydomain“
并在填写”用户ID“,”密码“和”数据库“参数的”下一页“页面中。我没有填写“服务器”参数。有效。事实上,如果你使用前一个连接字符串,那么放在“服务器”参数上并不重要,看起来这个参数是未使用的。另一方面,如果使用“DRIVER = {MySQL ODBC 5.1驱动程序}”作为连接字符串,并稍后使用服务器的FQDN填充“服务器”参数,则连接不起作用。
我该怎么做代码?我到目前为止所看到的所有例子都使用DSN或DataSet方法。我看到the same question posted but for PostgreSQL,并试图将其调整到mysql,但迄今为止,没有成功。第一种方法:
Rp.Load();
Rp.DataSourceConnections[0].SetConnection("DRIVER={MySQL ODBC 5.1 Driver};SERVER=myserver.mydomain", "database", "user", "pass");
Rp.ExportToDisk(ExportFormatType.PortableDocFormat, "report.pdf");
加注ExportToDisk期间CrystalDecisions.CrystalReports.Engine.LogOnException
消息=“登录失败\ n详细信息:IM002:[微软] [ODBC驱动程序管理器]数据源名称没有找到和指定默认驱动程序\ rError在文件中的临时文件路径 .RPT:\ n无法连接:不正确的登录参数
设置InnerException是System.Runtime.InteropS ervices.COMException用相同的消息,并没有任何的InnerException
的“没有指定默认驱动程序”使我不知道如果服务器参数是未使用过这里(见上文)。在这种情况下:我如何指定连接字符串?
我还没有尝试第二种方法,因为它不适用。
有没有人知道解决方案?
我认为通过nHibernate生成数据集可能会更快,或者直接执行ADO.NET查询,然后尝试解决问题。
如何通过NHibernate生成数据集?有没有自动的方法? (还没有看到任何方式,所有的例子都是手动的:导航对象图并逐一添加行)这就是为什么我反对这种方式,BD架构的任何改变,然后我必须改变DS模式和生成逻辑也不能保持同步。你知道任何自动方式吗? – 2010-04-28 17:29:11
OTOH,我修补程序在同时生成DSN并使报告使用该DSN。这是一个混乱,因为你需要成为管理员添加它,所以....:-( – 2010-04-28 17:31:38
没有快速的方法可以将数据集从nHibernate中取出,我只是说自己创建并填充代码,这是一个10分钟的工作。 – Doobi 2010-04-29 13:28:21