最近在研究Thingworx中连接Access数据库的方法。
PTC官方建议的方法是搭建Thingworx Edge,然后在Edge中安装ADO Service connectivity,此方法非常地烦琐,也缺少这方面的文档。
于是我另外尝试了几种方法。
方法1:通过SQL Server连接Access数据库。
SQL Server中可以通过Linked Servers连接外部数据库,如SQL Server、Oracle、Access等。
通过使用对应的Provider,可以将外部数据库映射到本地。
对于连接Access数据库,可以使用MS Office 12.0 Access DB Engine OLE DB Provider或Microsoft OLE DB Provider for ODBC Driver这两个Provider。
我测试发现ODBC的方式失败。
而在测试MS Office 12.0 Access DB Engine OLE DB Provider时我发现有2个限制:必须使用SQL Server正式版(Express版本失败),Access数据库不能使用密码。如果数据库没有此Provider则需要安装Microsoft Access Database Engine。
建立Linked Server之后,我们可以将Access的表映射到SQL Server的视图,这样处理之后就可以象本地的对象一样使用了。
方法2:在Access中连接SQL Server。
这个方法最简单,很容易实现,也支持 SQL Server Express。
缺点是只能单向从Access向SQL Server读写数据。
如果我们希望通过SQL Server查询Access中的数据,则需要在Access中编写查询语句,手动将Access数据同步到SQL Server,然后在SQL Server查询本地表。
方法3:通过Kepware ODBC Driver进行数据转换。
Kepware的ODBC插件能够将ODBC数据库中的数据直接转换成OPC Tag,结构为:表Tag Group >> 字段Tag Group >> 记录Tag。
如果我们仅仅是读写特定表、特定字段的特定行,则可以用这种方式从Thingworx中读写数据。
如果涉及到大数据量、较复杂的查询,则这种方式不合适。