【汇总】常见的13种数据源及其与报表系统的连接方式
本节用葡萄城报表为例,介绍各类数据源的定义方法。
葡萄城报表是一套强大的报表开发和系统搭建工具,既能与您开发的报表软件项目紧密集
成,也可独立部署运行,支持多数据源,具有无编码、灵活、稳定等特性,可以帮您快速搭建
专业的报表软件系统,实现各类报表的设计、管理、权限控制、数据填报、负载均衡及跨平台
发布。葡萄城报表模板库内置100余套报表模板,倾力收集自人力资源,销售管理,财务分析,
学校教育,医疗卫生等多个行业,包括图表类,条形码,地图,公告牌等多个报表类型,可免
费下载使用,即改即用。
2.1SQLServer数据源
定义SQLServer数据源的步骤如下:
(1)在报表资源管理器中,在“数据源”节点上单击鼠标右键,选择“添加数据源”菜
单项。
(2)在弹出的“报表数据源”对话框的“类型”处,选择“MicrosoftSqlClient
Provider”。输入SQLServer数据库服务器的名称或IP地址、连接数据库的用户名和密码,勾
选“保存我的密码”,输入或者选择数据库名。如下图:
(3)点击“确定”按钮,完成数据源创建操作,此时,在报表资源管理器窗口中的“数
据源”节点下新增了一个名为“DataSource1”的子节点。
2.2Oracle数据源
如果数据源是Oracle数据库,数据源的定义方法如下:
(1)在报表设计器中,右键单击报表资源管理窗格中的【数据源】节点,再单击【添加
数据源】,如下图:
(2)在数据源【类型】处选择“OracleClientProvider”。
(3)输入服务器名称:请输入Oracle数据库服务器的IP地址,以及数据库实例名,中
间用斜杠分隔,例如:127.0.0.1/orcl
(4)输入Oracle用户名、Oracle用户密码,勾选【保存我的密码】,如下图:
(5)点击【连接字符串】切换选项卡,点击对勾状图标,验证连接字串的正确性,如下
图:
(6)点击【确定】按钮,保存数据源设置。
如果在【连接字符串】选项卡中测试连接失败,可考虑用以下方法排除错误:
(1)确保完整安装Oracle客户端软件,安装过程中选择【管理员】模式,以便包含所
有必需的组件。并且,在64位操作系统中,必须既安装32位的Oracle客户端,又安装64
位的Oracle客户端。
(2)如果访问Linux上的Oracle数据库时出现TNS12514错误,一个可能的原因是服
务器上的服务名并非ServiceName而是SID。要解决此问题,可以在NetManager中设置
服务命名时,选中【使用Oracle8发行版8.0兼容标识】,然后在SID框中输入服务名。如下
图:
这个服务命名的配置信息保存在tnsnames.ora文件中,该文件保存在
C:\app\\product\11.2.0\client_1\network\admin目录下,如下图:
可以看到常见的(Service_Name=xxx)会变成(SID=xxx)。如下图:
另外需要注意的是,只有NetManager有那个SID的选项,用NetConfiguration
Assistant配置本地网络服务名时,没有机会指定SID。
(3)为Oracle数据源添加数据集时,请注意SQL语句中的参数名应为“冒号+参数
名”的形式,如whereid=:P1
(4)基于Oracle数据源定义数据集时,如果SQL语句中有汉字,可能出现预览报表无
数据的问题,原因是Oracle客户端组件ODP.NET(即OracleDataProviderfor.NET)默
认不用Unicode的编码格式。解决办法是在数据源连接字串中加入Unicode=True;如:
DataSource=1.2.3.4/orcl;UserId=hr;Password=123;Unicode=True;
2.3CSV数据源
葡萄城报表系统支持CSV格式的文本文件数据源,对于无法直接访问的业务数据库,可
将业务数据定时导出为固定格式的CSV文件,然后基于这些CSV文件生成报表。
定义CSV数据源的方法如下:
(1)在数据源的【类型】处选择“CSV”,再点击连接字符串输入框右上角的铅笔状图标。
如下图:
(2)指定CSV文件路径,如下图:
上图所示的City.csv文件内容为一个两个字段、3条记录的简单示例,其中首行为字段列
表,用逗号分隔,如下图:
(3)点击【OK】按钮返回数据源对话框,点击绿色对勾图标,验证连接字符串的正确性,
如下图:
(4)点击【确定】按钮,保存数据源设置。
(5)右键点击新建CSV数据源,单击【添加数据集】,如下图:
无需输入查询语句,系统将自动解析出CSV文件中的字段,如下图:
默认情况下,CSV文件中的所有内容都将展示在报表中,如需抽取部分数据进行报表展示,
可点击【过滤】,设置数据过滤条件。
2.4ODBC数据源
葡萄城报表系统支持市场上所有的关系型数据库,对于未在【类型】下拉框中列出的数据
库类型,均可采用ODBC数据源类型。
定义ODBC数据源的步骤如下:
(1)在数据源的【类型】处选择“MicrosoftOdbcProvider”。如下图:
(2)在【连接字符串】中,根据数据库类型的不同,输入相应的连接字串。
典型的几种数据库的ODBC连接字串形式如下:
MySQL数据库:
Driver={MySQLODBC5.3UNICODEDriver};Server=???;Database=???;
User=root;Password=???;Option=3;
IBMDB2数据库:
Driver={IBMDB2ODBCDRIVER};Database=???;Hostname=???;Port=???;
Protocol=TCPIP;Uid=???;Pwd=???;
如:
Driver={IBMDB2ODBCDRIVER};Database=Sample;Hostname=localhost;
Port=50000;Protocol=TCPIP;Uid=db2admin;Pwd=123456;
(3)点击连接字串输入框右上角的绿色对勾图标,可验证连接字串的正确性。
(4)点击【确定】按钮,保存数据源设定。
2.5OLEDB数据源
大多数关系型数据库或其他类型的数据服务都有厂商或第三方提供的OLEDB提供程序,
对于这些种类的数据服务,可通过OLEDB接口定义数据源。方法如下:
(1)在数据源的【类型】处选择“MicrosoftOleDbProvider”。如下图:
(2)选择OLEDB提供程序,例如SQLServer的是SQLOLEDB.1,Oracle数据库的是
OraOLEDB.Oracle.1。
(3)输入OLEDB连接信息,例如服务器或文件名称、数据库服务器登录帐号和密码等。
(4)选择【初始目录】,即需要连接到的数据库名称。
(5)需要的话,点击【连接字符串】选项卡,查看连接字串,必要时还可以进行编辑修
改,点击绿色对勾图标还可以对测试连接字串是否正确,如下图:
(6)点击【确定】按钮,保存数据源的设置。
2.6XML数据源
对于XML数据源,请在【类型】处选择“XMLProvider”,然后输入XML数据文件路径
或外部URL,如下图:
注意:
(1)XML数据源的连接字符串形式为:
xmldoc=http://localhost/xml/data;transformationdoc=http://localhost/xml/sche
ma
其中,xmldoc指定数据本身来源,transformationdoc指定XML格式信息来源。来源
可以是静态文件,也可以是其他应用程序提供的API的调用URL。
(2)XML数据源的数据集定义中,“查询”选项卡中的查询语句应为XPath语法,如:
//Country。
2.7JSON数据源
如果业务应用系统不允许报表系统直接访问,只能通过URL形式的调用接口进行访问,
那么建议采用JSON类型的数据源。
定义JSON数据源的步骤如下:
(1)在数据源的【类型】处选择“Json”。如下图:
(2)输入JsonSchema,即确定JSON数据的结构信息。一般来说,JSONSchema是
确定的文本,可选择“内嵌”,然后输入Schema文本内容,如下图:
如果不清楚Schema内容,可通过第三方网站(如http://jsonschema.net)或其他工具,
从具体的JSON数据中自动生成Schema内容。
(3)设置JSON内容来源。一般来说,JSON数据是从外部调用接口提供的,可输入该
调用接口的网址,如下图:
在创建好的JSON数据源基础上,添加新的数据集时,请注意【查询】部分的内容不是通
常的SQL语句,可借助报表设计器提供的JSON查询生成器,如下图:
取出全部JSON数据的语法如下:$.[]
2.8MySQL数据源
如果数据源是MySQL数据库,可通过ODBC方式进行连接。
定义数据源之前,请从以下网址下载MySQL数据库的ODBC驱动程序并安装:
64位ODBCDrivers:
https://dev.mysql.com/downloads/connector/odbc/
在64位操作系统中,必须同时下载并安装32位和64位两个版本的ODBC驱动程序,如
下图:
如果安装ODBC驱动程序失败,请先从微软网站下载安装VisualC++2010可再发行软
件包。对于64位操作系统,该软件包也必须同时安装32位和64位的版本:
64位版本:vcredist_x64.exe
https://www.microsoft.com/zh-CN/download/details.aspx?id=14632
32位版本:vcredist_x86.exe
https://www.microsoft.com/zh-CN/download/details.aspx?id=5555
MySQL数据源的定义方法如下:
(1)在报表设计器中,右键单击报表资源管理窗格中的【数据源】节点,再单击【添加
数据源】,如下图:
(2)在数据源【类型】处选择“MicrosoftOdbcProvider”。
(3)输入如下形式的连接字串:
Driver={MySQLODBC5.3UNICODEDriver};Server=???;Port=????;Database=???;
User=???;Password=???;Option=3;
其中,Server参数为MySQL数据库服务器的IP地址,Port参数为MySQL服务器的端
口号,默认为3306,Database参数为数据库名。例如:
Driver={MySQLODBC5.3UNICODEDriver};Server=192.168.1.23;Port=3306;
Database=MyDb;User=root;Password=123;Option=3;
(4)点击【确定】按钮,保存数据源设置。
基于MySQL数据源定义数据集时,如果提示错误信息,请按如下方法排错:
(1)提示“xxxisnotallowedtoconnecttothisMySQLserver”
这是因为服务器端禁止客户端访问,可通过两种方法解决:
(a)在MySQL服务器上执行GRANT授权语句,如:
GRANTALLPRIVILEGESON.TO‘root’@’192.168.1.3′IDENTIFIEDBY
‘mypassword’WITHGRANTOPTION;
(b)在MySQL服务器上修改user表中的记录,将host字段的值更新为百分号(%):
mysql>usemysql
mysql>GRANTSELECT,INSERT,UPDATE,DELETEON[db_name].TO
[username]@[ipadd]identifiedby''[password]'';
mysql>updateusersethost=‘%’whereuser=‘root’;
(2)提示错误:08S01LostconnectiontoMySQLserverat''waitingforinitial
communicationpacket''
这是通讯设置问题,解决方法如下:
(a)在/etc/my.cnf文件的[mysqld]中加上skip-name-resolve,然后重启MySQL。
(b)在/etc/hosts文件中添加【IP地址主机名】映射,例如:
192.168.1.1localhost
(3)参数查询不出结果,可能是参数形式问题,参数必须是问号形式,如:
selectfromuserinfowheredate_format(duedate,''%Y'')=?andID<=?
多个参数时,按数据集定义对话框中【参数】列表的次序来匹配。
2.9DB2数据源
如果数据源是DB2数据库,可通过ODBC方式进行连接。
定义数据源之前,请从以下IBM网址下载DB2数据库的客户端并安装:
http://www.ibm.com/developerworks/cn/downloads/im/udbexp/
请注意:DB2客户端组件包含DB2的ODBC驱动程序和其他必要组件。仅仅下载安装单
独的ODBC驱动程序是不够的。
DB2客户端组件的安装界面如下图:
建议勾选所有功能部件。
DB2数据源的定义方法如下:
(1)在报表设计器中,右键单击报表资源管理窗格中的【数据源】节点,再单击【添加
数据源】,如下图:
(2)在数据源【类型】处选择“MicrosoftOdbcProvider”。
(3)输入如下形式的连接字串:
Driver={IBMDB2ODBCDRIVER};Database=myDB;Hostname=myServer;
Port=xxxx;Protocol=TCPIP;Uid=myUsername;Pwd=myPassword;
其中,Hostname参数为DB2数据库服务器的IP地址,Port参数为服务端口号,
Database参数为数据库名。例如:
Driver={IBMDB2ODBCDRIVER};Database=Sample;Hostname=localhost;
Port=5000;Protocol=TCPIP;Uid=db2admin;Pwd=Db123456;
(4)点击【确定】按钮,保存数据源设置。
基于DB2数据源定义数据集时,SQL语句中的表和视图名之前,应加上Owner前缀,例
如:
selectfromStaff
需要修改为:
selectfromAdministrator.Staff
2.10MongoDB数据源
MongoDB是典型的非关系型数据库,其操作与普通关系型数据库差异较大,以下详细介
绍如何使用葡萄城报表设计器,设计以MongoDB数据库为数据源的报表。
(1)下载安装MongDB的ODBC驱动程序
MongoDB的ODBC驱动程序可从以下网址下载:
http://www.simba.com/drivers/mongodb-odbc-jdbc/
在64位的操作系统中,请同时安装32位和64位的两个驱动程序。安装文件分别为:
SimbaMongoDB2.232-bit.msi和SimbaMongoDB2.264-bit.msi
安装后请注意要将从simba.com获得的许可文件SimbaMongoDBODBCDriver.lic复制
到安装目录下的lib子目录中(C:\ProgramFiles\SimbaMongoDBODBCDriver\lib)。
(2)启动MongoDB的服务
(a)创建C:\MongoData\db1子目录,作为数据库文件的存储文件夹。
(b)运行cmd打开命令行窗口,转到MongoDB的安装目录下的Bin子目录,例如:
C:\ProgramFiles\MongoDB\Server\3.4\bin。执行以下命令:
mongod.exe--dbpathC:\MongoData\db1
(3)插入示例数据
(a)运行cmd打开命令行窗口,转到MongoDB的安装目录下的Bin子目录,例如:
C:\ProgramFiles\MongoDB\Server\3.4\bin。执行以下命令:
mongo
(b)创建集合(相当于数据库的表)
>db.createCollection(“Emp”)
其中,Emp为集合名,相当于数据库的表名。
(c)插入文档(相当于数据库的记录)
>db.Emp.insert({name:’John’,age:30})
(4)设计MongoDB数据源
(a)打开报表设计器,添加新数据源。
(b)选择【类型】为MicrosoftOdbcProvider。
(c)输入如下形式的连接字符串:
Driver={SimbaMongoDBODBCDriver};Server=;
Port=27017;如下图:
完整的连接字串形如:
Driver=SimbaMongoDBODBCDriver;Server=[ServerInfo];
Port=[PortNumber];Database=[MongoDBDatabase];
authMechanism=SCRAM-SHA-1或GSSAPI或PLAIN;
UID=[UserName];PWD=[Password];
(5)设计MongoDB数据集
(a)在新添加的MongoDB数据源下添加新数据集。
(b)在【查询】部分输入SQL语句。
如:selectfromEmp
其中,Emp就是MongoDB的集合名。
(6)设计报表表格
(a)在设计区拖放一个表格元素。
(b)设置表格字段绑定。
如下图:
预览效果如下图:
2.11Excel数据源
葡萄城报表系统支持Excel文件数据源,对于无法直接访问的业务数据库,可将业务数据
导出为Excel文件,然后基于这些文件生成报表。
定义Excel数据源的方法如下:
(1)在报表设计器中,右键单击报表资源管理窗格中的【数据源】节点,再单击【添加
数据源】,如下图:
(2)在数据源【类型】处选择“MicrosoftOdbcProvider”,如下图:
(3)在【连接字符串】处输入如下形式的ODBC连接字串:
如果是Excel2003以及更早的XLS格式文件,连接字串形如:
Driver={MicrosoftExcelDriver(.xls)};DriverId=790;Dbq=C:\...\xxx.xls;
如果是Excel2007或者更晚的XLSX格式文件,连接字串形如:
Driver={MicrosoftExcelDriver(.xls,.xlsx,.xlsm,.xlsb)};DBQ=C:\...\xxx.xlsx;
(4)点击【确定】按钮,保存数据源设置。
注意:
(1)Excel的ODBC驱动程序是由Access数据库引擎(DatabaseEngine)提供的。可
从下面的网址下载:
https://www.microsoft.com/en-US/download/details.aspx?id=13255
(2)在64位操作系统中,报表服务要求安装64位的Access引擎,而32位的报表设计
器要求安装32位的Access引擎。但是Windows系统不允许同时安装32位和64位的Access
数据库引擎,因此,请在报表服务器之外的电脑上安装运行独立报表设计器,以及32位的
Access数据库引擎。
(3)为Excel数据源添加数据集时,请注意SQL语句中,表名应为Excel工作表的名称
加上美元符($),例如:
select[ID],[名称]from[Sheet1$]
2.12Access数据源
如果数据源是微软的Access数据库,可通过OLEDB方式进行连接。定义Access数据源
的方法如下:
(1)在报表设计器中,右键单击报表资源管理窗格中的【数据源】节点,再单击【添加
数据源】,如下图:
(2)在数据源【类型】处选择“MicrosoftOleDbProvider”。
(3)在【OLEDB提供程序】下拉列表中选择“Microsoft.ACE.OLEDB.12.0”。
(4)输入Access数据库文件的完整路径,如:C:\temp\Access\Database1.mdb
(5)切换到【连接字符串】选项卡,查看连接字串,如:
provider=Microsoft.ACE.OLEDB.12.0;
datasource=C:\temp\Access\Database1.mdb;
(6)点击【确定】按钮,保存数据源设置。
注意:
(1)Access的OLEDB提供程序是由Access数据库引擎(DatabaseEngine)提供的。
可从下面的网址下载:
https://www.microsoft.com/en-US/download/details.aspx?id=13255
(2)在64位操作系统中,报表服务要求安装64位的Access引擎,而32位的报表设计
器要求安装32位的Access引擎。但是Windows系统不允许同时安装32位和64位的Access
数据库引擎,因此,请在报表服务器之外的电脑上安装运行独立报表设计器,以及32位的
Access数据库引擎。
2.13其他数据源
除了以上各个小节介绍的数据源,对话框中的【类型】下拉列表中,还包括两个特殊的数
据源类型:
DatasetProvider
ObjectProvider
这两种数据源类型属于运行时数据源(RuntimeDataSource)类型,是专供开发人员使
用的。使用报表设计器定义设计时数据源(DesignTimeDataSource)时,请忽略这两种数
据源类型。
|
|