假定一个 MS Access (.mdb) 数据库具有以下表:

SQL 适配器配置文件与文件适配器配置文件的唯一差别是 DatasourceInterface 部分。
文件适配器在 DatasourceInterface 部分存储文件集合,而 SQL 适配器的文件中包含 ConnectionString 和 QueryCollection。
这两种配置文件之间的主要差别在于检索和解析方法的不同。 文件的其余部分相同。
SQL 接口定义到数据库的连接和用于检索数据的查询。
详细信息如下所示:
注意:本部分是基于上面的数据源数据库定义的。
ConnectionString:用于访问源数据库的连接字符串。
可在 DataSourceInterface 元素和/或 Query 元素中定义 ConnectionString。 DataSourceInterface 元素中的 ConnectionString 定义是默认的,仅在没有 ConnectionString 定义的查询中使用。 这允许适配器连接到若干个数据库,其中每个查询可以有自己的连接字符串。 有关连接字符串机制的更多详细信息,请参阅以下部分。
Query:指定查询属性。
注意:InputFormat 字段的顺序必须与查询选定字段的顺序相对应。
注意:必须输入查询键字段作为语句中的第一个选定值。
注意:“Date”字段通常需要使用特殊字符将日期括上。 将字段识别为日期字段所需要的字符取决于数据源。 如本部分开头的图中所示,可以使用 # 字符来包装 Excel 中的值字段。 但其他数据源可能需要采用不同的方法。 有关详细信息,请参阅适配器配置规范。
用 AutoCompleteQuery="yes" 构建的查询示例(基于 Excel 的 ODBC):
SELECT INC_CLOSE_DATE, INCIDENT_REF, Severity, `Resolve Time`, `Date Logged`, `Date Resolved` FROM `AllCalls$` WHERE INC_CLOSE_DATE>CDate('7/03/2005 13:06:21') order by INC_CLOSE_DATE
此 select 语句必须可在运行查询的目标数据库上执行。 在源与用于连接源的 ODBC 驱动程序之间,这可能有所不同。 例如,在 Oracle 中,可从特殊的“dual”表中选择值 (select 'aaa', '1-jan-1970' from dual),但在 Excel 中,只能在没有表的情况下直接选择值。 (select 'aaa')
以下是 XML 布局中的完整配置文件:
<?xml version="1.0" encoding="utf-8"?>
<AdapterConfiguration>
<General MajorVersion="3" MinorVersion="0" RunOnce="yes" LogDebugMode="yes" ConsoleDebugMode="yes" WorkingDirectoryName="d:\Oblicore\Training Kit\Exercises\Adapters\SQL Adapters\Ex1\Solution">
<DataSourceDifferenceFromUTC DefaultOffset="1" TimeFormat="%Y/%m/%d-%H:%M:%S"/>
</General>
<OblicoreInterface Mode="online">
<OnlineInterface Port="2000" SecurityLevel="none"/>
</OblicoreInterface>
<DataSourceInterface>
<ConnectionString>
Driver={Microsoft Access Driver (*.mdb)};Dbq=d:\Oblicore\Training Kit\Exercises\Adapters\SQL Adapters\Ex1\db1.mdb;
</ConnectionString>
<QueryCollection>
<Query QueryName="Query" InputFormat="InputFormat" SleepTime="5">
<SelectStatement AutoCompleteQuery="yes">
select time,server,availability from t_availability
</SelectStatement>
<QueryKeyFields>
<KeyField Name="time" Sort="asc" ValueLeftWrapper="#" ValueRightWrapper="#"/>
<KeyField Name="server" Sort="asc"/>
<SelectInitialValues>
select 'AAA','70-1-1'
</SelectInitialValues>
</QueryKeyFields>
</Query>
</QueryCollection>
</DataSourceInterface>
<InputFormatCollection>
<InputFormat InputFormatName="InputFormat">
<InputFormatFields>
<InputFormatField Name="timestamp" Type="time" TimeFormat="%m/%d/%Y %I:%M:%S %p"/>
<InputFormatField Name="server" Type="string"/>
<InputFormatField Name="status" Type="integer"/>
</InputFormatFields>
<TranslatorSwitch DefaultTranslator="Translator"/>
</InputFormat>
</InputFormatCollection>
<TranslatorCollection>
<Translator TranslatorName="Translator">
<TranslatorFields>
<TranslatorField Name="ResourceId" SourceType="table" SourceName="ResourceTable"/>
<TranslatorField Name="EventTypeId" SourceType="constant" ConstantValue="1500"/>
<TranslatorField Name="Timestamp" SourceType="field" SourceName="timestamp"/>
<TranslatorField Name="Value" SourceType="field" SourceName="status"/>
</TranslatorFields>
</Translator>
</TranslatorCollection>
<TranslationTableCollection LoadingMode="remote">
<TranslationTable Name="ResourceTable" DestinationType="resource">
<TranslationField>server</TranslationField>
</TranslationTable>
</TranslationTableCollection>
</AdapterConfiguration>
| 版权所有 © 2012 CA。 保留所有权利。 | 就该主题发送电子邮件至 CA Technologies |