Дата публикации: 25.01.2023
Работа с IBProvider через LcpiComApiProvider (C#, FB)
Демонстрация работы с IBProvider через lcpi.lib.com.ComApiProvider. В качестве реализации «LCPI COM API» используется «LCPI Easy COM».
Вы можете найти готовый проект в дистрибутиве «LCPI ADO.NET Provider for OLE DB» в каталоге «c:\Program Files (x86)\LCPI\OleDb.NET\[provider version]\Samples\Collection_001\Sample_0031__UsingLcpiComApi».
Так же рекоммендуется прочитать статью «IBProvider and LCPI COM API».
Конфигурационный файл для 32-битных процессов:
<!--
LCPI Easy COM Settings [32bit].
It is a sample which defines LcpiEasyCom settings for using:
- LCPI.IBProvider.5
- LCPI.IBProvider.5.Free
- LCPI.IBProvider.5.Private.vc17.release
- LCPI.IBProvider.5.Private.vc17.debug
- LCPI.OleDbServices.DataInitManager.Global.1
- LCPI.OleDbServices.DataInitManager.Local.1
- LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.release
- LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.debug
- MSDASC.MSDAINITIALIZE.1
Additional aliases:
- LCPI.IBProvider
- LCPI.OleDbServices.DataInitManager.Global
- LCPI.OleDbServices.DataInitManager.Local
- MSDASC.MSDAINITIALIZE
There
- "MSDAINITIALIZE" is mapped with "LCPI OLE DB Services".
It is expected that the binaries of these components are presented at the same folder with this settings-file:
- lcpi.ibprovider-v5_vc17_w32_prof_i.dll
- lcpi.ibprovider-v5_vc17_w32_prof_d.dll
- lcpi.ibprovider-v5_vc17_w32_free_i.dll
- lcpi.oledb_services-v1_vc17_w32_prof_i.dll
- lcpi.oledb_services-v1_vc17_w32_prof_d.dll
You can adapt this file for your project.
-->
<ECM Version="1.0">
<Registry>
<Key Name="HKCR">
<!-- ++++++++++++++++++++++++++ CLSIDs ++++++++++++++++++++++++++++++++ -->
<Key Name="CLSID">
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{769A12A0-04BF-11D8-AE8B-00A0C907DB93}">
<Value Name="">LCPI.IBProvider.5</Value>
<Value Name="OLE DB Services" Type="ui4">0xFFFFFFFF</Value>
<Value Name="flush_log_period" Type="ui4">0</Value>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{769A12A1-04BF-11D8-AE8B-00A0C907DB93}">LCPI.IBProvider Error Lookup [v5]</Key>
</Key>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ProgID">LCPI.IBProvider.5</Key>
<Key Name="VersionIndependentProgID">LCPI.IBProvider</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{769A12AC-04BF-11D8-AE8B-00A0C907DB93}">
<Value Name="">LCPI.IBProvider.5.Free</Value>
<Value Name="OLE DB Services" Type="ui4">0xFFFFFFFF</Value>
<Value Name="flush_log_period" Type="ui4">0</Value>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{769A12AD-04BF-11D8-AE8B-00A0C907DB93}">LCPI.IBProvider Lookup [v5][Free]</Key>
</Key>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w32_free_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ProgID">LCPI.IBProvider.5.Free</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{4954F76F-5620-4B90-BE4D-61EC6940B803}">
<Value Name="">LCPI.IBProvider.5.Private.vc17.release</Value>
<Value Name="OLE DB Services" Type="ui4">0xFFFFFFFF</Value>
<Value Name="flush_log_period" Type="ui4">0</Value>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{550141E6-CDA8-4210-B7EB-7F7D9D9C4EF6}">LCPI.IBProvider Error Lookup [v5] [Private.Release]</Key>
</Key>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ProgID">LCPI.IBProvider.5.Private.vc17.release</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{9D75E160-94FB-4540-B117-3D68C45919C4}">
<Value Name="">LCPI.IBProvider.5.Private.vc17.debug</Value>
<Value Name="OLE DB Services" Type="ui4">0xFFFFFFFF</Value>
<Value Name="flush_log_period" Type="ui4">0</Value>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{6B4BA676-3EE1-4C44-8EF9-A29B27890DB8}">LCPI.IBProvider Error Lookup [v5] [Private.Debug]</Key>
</Key>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w32_prof_d.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ProgID">LCPI.IBProvider.5.Private.vc17.debug</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{769A12A1-04BF-11D8-AE8B-00A0C907DB93}">
<Value Name="">LCPI.IBProvider Error Lookup [v5]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{769A12AD-04BF-11D8-AE8B-00A0C907DB93}">
<Value Name="">LCPI.IBProvider Error Lookup [v5][Free]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w32_freee_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{550141E6-CDA8-4210-B7EB-7F7D9D9C4EF6}">
<Value Name="">LCPI.IBProvider Error Lookup [v5] [Private.Release]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{6B4BA676-3EE1-4C44-8EF9-A29B27890DB8}">
<Value Name="">LCPI.IBProvider Error Lookup [v5] [Private.Debug]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w32_prof_d.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{40AD5FB6-0804-11E7-964E-2C56DC394BFA}">
<Value Name="">LCPI.OleDbServices.DataInitManager.Global.1</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">LCPI OLE DB Services Error Lookup [v1]</Key>
</Key>
<Key Name="ProgID">LCPI.OleDbServices.DataInitManager.Global.1</Key>
<Key Name="VersionIndependentProgID">LCPI.OleDbServices.DataInitManager.Global</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{40AD5FB8-0804-11E7-964E-2C56DC394BFA}">
<Value Name="">LCPI.OleDbServices.DataInitManager.Local.1</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">LCPI OLE DB Services Error Lookup [v1]</Key>
</Key>
<Key Name="ProgID">LCPI.OleDbServices.DataInitManager.Local.1</Key>
<Key Name="VersionIndependentProgID">LCPI.OleDbServices.DataInitManager.Local</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{2206CDB0-19C1-11D1-89E0-00C04FD7A829}">
<Value Name="">MSDASC.MSDAINITIALIZE.1 [LCPI]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">LCPI OLE DB Services Error Lookup [v1]</Key>
</Key>
<Key Name="ProgID">MSDASC.MSDAINITIALIZE.1</Key>
<Key Name="VersionIndependentProgID">MSDASC.MSDAINITIALIZE</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{CCB4EC60-B9DC-11D1-AC80-00A0C9034873}">
<Value Name="">MSDASC.PDPO.1 [LCPI]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">LCPI OLE DB Services Error Lookup [v1]</Key>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{4888EE9F-A34B-4870-A731-D26A1FB2B24E}">
<Value Name="">LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.release</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{CF3EB002-4D77-49B0-8C6B-695B692CE958}">LCPI OLE DB Services Error Lookup [v1] [Private.Release]</Key>
</Key>
<Key Name="ProgID">LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.release</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{FF8BDE90-4FAE-4AE8-A618-C781C89982B7}">
<Value Name="">LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.debug</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w32_prof_d.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{55CEEA41-B34E-4F09-A4B4-C8057DCBF13A}">LCPI OLE DB Services Error Lookup [v1] [Private.Debug]</Key>
</Key>
<Key Name="ProgID">LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.debug</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">
<Value Name="">LCPI OLE DB Services Error Lookup [v1]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{CF3EB002-4D77-49B0-8C6B-695B692CE958}">
<Value Name="">LCPI OLE DB Services Error Lookup [v1] [Private.Release]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w32_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- PRIVATE -->
<Key Name="{55CEEA41-B34E-4F09-A4B4-C8057DCBF13A}">
<Value Name="">LCPI OLE DB Services Error Lookup [v1] [Private.Debug]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w32_prof_d.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
</Key> <!-- /CLSID -->
<!-- +++++++++++++++++++++++++ PROG IDs +++++++++++++++++++++++++++++++ -->
<Key Name="LCPI.IBProvider.5">
<Value Name="">LCPI OLE DB Provider for InterBase [v5]</Value>
<Key Name="CLSID">{769A12A0-04BF-11D8-AE8B-00A0C907DB93}</Key>
</Key>
<Key Name="LCPI.IBProvider">
<Value Name="">LCPI OLE DB Provider for InterBase [v5]</Value>
<Key Name="CurVer">LCPI.IBProvider.5</Key>
</Key>
<Key Name="LCPI.IBProvider.5.Free">
<Value Name="">LCPI OLE DB Provider for InterBase [v5][Free]</Value>
<Key Name="CLSID">{769A12AC-04BF-11D8-AE8B-00A0C907DB93}</Key>
</Key>
<Key Name="LCPI.IBProvider.5.Private.vc17.release">
<Key Name="CLSID">{4954F76F-5620-4B90-BE4D-61EC6940B803}</Key>
</Key>
<Key Name="LCPI.IBProvider.5.Private.vc17.debug">
<Key Name="CLSID">{9D75E160-94FB-4540-B117-3D68C45919C4}</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Global.1">
<Value Name="">LCPI OLE DB Services. Connection Initializer [Global].</Value>
<Key Name="CLSID">{40AD5FB6-0804-11E7-964E-2C56DC394BFA}</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Global">
<Value Name="">LCPI OLE DB Services. Connection Initializer [Global].</Value>
<Key Name="CurVer">LCPI.OleDbServices.DataInitManager.Global.1</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Local.1">
<Value Name="">LCPI OLE DB Services. Connection Initializer [Local].</Value>
<Key Name="CLSID">{40AD5FB8-0804-11E7-964E-2C56DC394BFA}</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Local">
<Value Name="">LCPI OLE DB Services. Connection Initializer [Local].</Value>
<Key Name="CurVer">LCPI.OleDbServices.DataInitManager.Local.1</Key>
</Key>
<Key Name="MSDASC.MSDAINITIALIZE.1">
<Value Name="">LCPI OLE DB Services. Connection Initializer [MSDAINITIALIZE].</Value>
<Key Name="CLSID">{2206CDB0-19C1-11D1-89E0-00C04FD7A829}</Key>
</Key>
<Key Name="MSDASC.MSDAINITIALIZE">
<Value Name="">LCPI OLE DB Services. Connection Initializer [MSDAINITIALIZE].</Value>
<Key Name="CurVer">MSDASC.MSDAINITIALIZE.1</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.release">
<Key Name="CLSID">{4888EE9F-A34B-4870-A731-D26A1FB2B24E}</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.debug">
<Key Name="CLSID">{FF8BDE90-4FAE-4AE8-A618-C781C89982B7}</Key>
</Key>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</Key>
</Registry>
</ECM>
Конфигурационный файл для 64-битных процессов:
<!--
LCPI Easy COM Settings [64bit].
It is a sample which defines LcpiEasyCom settings for using:
- LCPI.IBProvider.5
- LCPI.IBProvider.5.Free
- LCPI.IBProvider.5.Private.vc17.release
- LCPI.IBProvider.5.Private.vc17.debug
- LCPI.OleDbServices.DataInitManager.Global.1
- LCPI.OleDbServices.DataInitManager.Local.1
- LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.release
- LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.debug
- MSDASC.MSDAINITIALIZE.1
Additional aliases:
- LCPI.IBProvider
- LCPI.OleDbServices.DataInitManager.Global
- LCPI.OleDbServices.DataInitManager.Local
- MSDASC.MSDAINITIALIZE
There
- "MSDAINITIALIZE" is mapped with "LCPI OLE DB Services".
It is expected that the binaries of these components are presented at the same folder with this settings-file:
- lcpi.ibprovider-v5_vc17_w64_prof_i.dll
- lcpi.ibprovider-v5_vc17_w64_prof_d.dll
- lcpi.ibprovider-v5_vc17_w64_free_i.dll
- lcpi.oledb_services-v1_vc17_w64_prof_i.dll
- lcpi.oledb_services-v1_vc17_w64_prof_d.dll
You can adapt this file for your project.
-->
<ECM Version="1.0">
<Registry>
<Key Name="HKCR">
<!-- ++++++++++++++++++++++++++ CLSIDs ++++++++++++++++++++++++++++++++ -->
<Key Name="CLSID">
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{769A12A0-04BF-11D8-AE8B-00A0C907DB93}">
<Value Name="">LCPI.IBProvider.5</Value>
<Value Name="OLE DB Services" Type="ui4">0xFFFFFFFF</Value>
<Value Name="flush_log_period" Type="ui4">0</Value>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{769A12A1-04BF-11D8-AE8B-00A0C907DB93}">LCPI.IBProvider Error Lookup [v5]</Key>
</Key>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ProgID">LCPI.IBProvider.5</Key>
<Key Name="VersionIndependentProgID">LCPI.IBProvider</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{769A12AC-04BF-11D8-AE8B-00A0C907DB93}">
<Value Name="">LCPI.IBProvider.5.Free</Value>
<Value Name="OLE DB Services" Type="ui4">0xFFFFFFFF</Value>
<Value Name="flush_log_period" Type="ui4">0</Value>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{769A12AD-04BF-11D8-AE8B-00A0C907DB93}">LCPI.IBProvider Lookup [v5][Free]</Key>
</Key>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w64_free_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ProgID">LCPI.IBProvider.5.Free</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{B1F5221E-6135-490B-8FD8-7BB8A1EBB775}">
<Value Name="">LCPI.IBProvider.5.Private.vc17.release</Value>
<Value Name="OLE DB Services" Type="ui4">0xFFFFFFFF</Value>
<Value Name="flush_log_period" Type="ui4">0</Value>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{A8E8B9E6-F7C4-4126-B572-0C675A4BB9DE}">LCPI.IBProvider Error Lookup [v5] [Private.Release]</Key>
</Key>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ProgID">LCPI.IBProvider.5.Private.vc17.release</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{EE5D1409-7217-4F6A-83AD-8A865DC2BA3C}">
<Value Name="">LCPI.IBProvider.5.Private.vc17.debug</Value>
<Value Name="OLE DB Services" Type="ui4">0xFFFFFFFF</Value>
<Value Name="flush_log_period" Type="ui4">0</Value>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{EC1206D8-0C97-4C72-B84B-B8E92406126D}">LCPI.IBProvider Error Lookup [v5] [Private.Debug]</Key>
</Key>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w64_prof_d.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ProgID">LCPI.IBProvider.5.Private.vc17.debug</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{769A12A1-04BF-11D8-AE8B-00A0C907DB93}">
<Value Name="">LCPI.IBProvider Error Lookup [v5]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{769A12AD-04BF-11D8-AE8B-00A0C907DB93}">
<Value Name="">LCPI.IBProvider Error Lookup [v5][Free]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w64_freee_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{A8E8B9E6-F7C4-4126-B572-0C675A4BB9DE}">
<Value Name="">LCPI.IBProvider Error Lookup [v5] [Private.Release]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{EC1206D8-0C97-4C72-B84B-B8E92406126D}">
<Value Name="">LCPI.IBProvider Error Lookup [v5] [Private.Debug]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.ibprovider-v5_vc17_w64_prof_d.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{40AD5FB6-0804-11E7-964E-2C56DC394BFA}">
<Value Name="">LCPI.OleDbServices.DataInitManager.Global.1</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">LCPI OLE DB Services Error Lookup [v1]</Key>
</Key>
<Key Name="ProgID">LCPI.OleDbServices.DataInitManager.Global.1</Key>
<Key Name="VersionIndependentProgID">LCPI.OleDbServices.DataInitManager.Global</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{40AD5FB8-0804-11E7-964E-2C56DC394BFA}">
<Value Name="">LCPI.OleDbServices.DataInitManager.Local.1</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">LCPI OLE DB Services Error Lookup [v1]</Key>
</Key>
<Key Name="ProgID">LCPI.OleDbServices.DataInitManager.Local.1</Key>
<Key Name="VersionIndependentProgID">LCPI.OleDbServices.DataInitManager.Local</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{2206CDB0-19C1-11D1-89E0-00C04FD7A829}">
<Value Name="">MSDASC.MSDAINITIALIZE.1 [LCPI]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">LCPI OLE DB Services Error Lookup [v1]</Key>
</Key>
<Key Name="ProgID">MSDASC.MSDAINITIALIZE.1</Key>
<Key Name="VersionIndependentProgID">MSDASC.MSDAINITIALIZE</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{CCB4EC60-B9DC-11D1-AC80-00A0C9034873}">
<Value Name="">MSDASC.PDPO.1 [LCPI]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">LCPI OLE DB Services Error Lookup [v1]</Key>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{44F98904-F10D-45B2-B5FF-1A17D79EAF1F}">
<Value Name="">LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.release</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{7DF6AC82-7A5E-4058-87E5-A91D67B0636B}">LCPI OLE DB Services Error Lookup [v1] [Private.Release]</Key>
</Key>
<Key Name="ProgID">LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.release</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{420CE6F3-F255-441D-BFCE-C5451D4C7607}">
<Value Name="">LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.debug</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w64_prof_d.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
<Key Name="ExtendedErrors">
<Value Name="">Extended Error Service</Value>
<Key Name="{40A90C63-D3F4-4060-8A53-9D2D5EFAE0CE}">LCPI OLE DB Services Error Lookup [v1] [Private.Debug]</Key>
</Key>
<Key Name="ProgID">LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.debug</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<Key Name="{40AD5FB5-0804-11E7-964E-2C56DC394BFA}">
<Value Name="">LCPI OLE DB Services Error Lookup [v1]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
<!-- PRIVATE -->
<Key Name="{7DF6AC82-7A5E-4058-87E5-A91D67B0636B}">
<Value Name="">LCPI OLE DB Services Error Lookup [v1] [Private.Release]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w64_prof_i.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- PRIVATE -->
<Key Name="{40A90C63-D3F4-4060-8A53-9D2D5EFAE0CE}">
<Value Name="">LCPI OLE DB Services Error Lookup [v1] [Private.Debug]</Value>
<Key Name="InprocServer32">
<Value Name="">lcpi.oledb_services-v1_vc17_w64_prof_d.dll</Value>
<Value Name="ThreadingModel">Free</Value>
</Key>
</Key>
<!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -->
</Key> <!-- /CLSID -->
<!-- +++++++++++++++++++++++++ PROG IDs +++++++++++++++++++++++++++++++ -->
<Key Name="LCPI.IBProvider.5">
<Value Name="">LCPI OLE DB Provider for InterBase [v5]</Value>
<Key Name="CLSID">{769A12A0-04BF-11D8-AE8B-00A0C907DB93}</Key>
</Key>
<Key Name="LCPI.IBProvider">
<Value Name="">LCPI OLE DB Provider for InterBase [v5]</Value>
<Key Name="CurVer">LCPI.IBProvider.5</Key>
</Key>
<Key Name="LCPI.IBProvider.5.Free">
<Value Name="">LCPI OLE DB Provider for InterBase [v5][Free]</Value>
<Key Name="CLSID">{769A12AC-04BF-11D8-AE8B-00A0C907DB93}</Key>
</Key>
<Key Name="LCPI.IBProvider.5.Private.vc17.release">
<Key Name="CLSID">{B1F5221E-6135-490B-8FD8-7BB8A1EBB775}</Key>
</Key>
<Key Name="LCPI.IBProvider.5.Private.vc17.debug">
<Key Name="CLSID">{EE5D1409-7217-4F6A-83AD-8A865DC2BA3C}</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Global.1">
<Value Name="">LCPI OLE DB Services. Connection Initializer [Global].</Value>
<Key Name="CLSID">{40AD5FB6-0804-11E7-964E-2C56DC394BFA}</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Global">
<Value Name="">LCPI OLE DB Services. Connection Initializer [Global].</Value>
<Key Name="CurVer">LCPI.OleDbServices.DataInitManager.Global.1</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Local.1">
<Value Name="">LCPI OLE DB Services. Connection Initializer [Local].</Value>
<Key Name="CLSID">{40AD5FB8-0804-11E7-964E-2C56DC394BFA}</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Local">
<Value Name="">LCPI OLE DB Services. Connection Initializer [Local].</Value>
<Key Name="CurVer">LCPI.OleDbServices.DataInitManager.Local.1</Key>
</Key>
<Key Name="MSDASC.MSDAINITIALIZE.1">
<Value Name="">LCPI OLE DB Services. Connection Initializer [MSDAINITIALIZE].</Value>
<Key Name="CLSID">{2206CDB0-19C1-11D1-89E0-00C04FD7A829}</Key>
</Key>
<Key Name="MSDASC.MSDAINITIALIZE">
<Value Name="">LCPI OLE DB Services. Connection Initializer [MSDAINITIALIZE].</Value>
<Key Name="CurVer">MSDASC.MSDAINITIALIZE.1</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.release">
<Key Name="CLSID">{44F98904-F10D-45B2-B5FF-1A17D79EAF1F}</Key>
</Key>
<Key Name="LCPI.OleDbServices.DataInitManager.Local.1.Private.vc17.debug">
<Key Name="CLSID">{420CE6F3-F255-441D-BFCE-C5451D4C7607}</Key>
</Key>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</Key>
</Registry>
</ECM>
Исходный код примера:
////////////////////////////////////////////////////////////////////////////////
//Samples for LCPI ADO.NET Data provider for OLEDB.
// ibprovider.com. 19.01.2023
using System;
using System.Threading;
using lcpi.data.oledb;
namespace Sample_0031{
////////////////////////////////////////////////////////////////////////////////
//class Program
class Program
{
//
// Valid identifiers:
// - LCPI.IBProvider [lcpi.ibprovider-v5_vc17_wXX_prof_i.dll]
// - LCPI.IBProvider.5 [lcpi.ibprovider-v5_vc17_wXX_prof_i.dll]
// - LCPI.IBProvider.5.Free [lcpi.ibprovider-v5_vc17_wXX_free_i.dll]
// - LCPI.IBProvider.5.Private.vc17.release [lcpi.ibprovider-v5_vc17_wXX_prof_i.dll]
// - LCPI.IBProvider.5.Private.vc17.debug [lcpi.ibprovider-v5_vc17_wXX_prof_d.dll]
//
private const string c_cn_str
="provider=LCPI.IBProvider.5;"
+"location=inet4://localhost/d:\\database\\fb_03_0_0\\employee.fdb;"
+"dbclient_type=fb.direct;"
+"user id=SYSDBA;"
+"password=masterkey;";
//----------------------------------------------------------------------
static int Main(string[] args)
{
int resultCode=0;
try // [catch]
{
string comApiProviderDir
=Helper__GetRootDirOfLcpiComApiProvider();
//Console.WriteLine("comApiProviderDir: [{0}]",comApiProviderDir);
//-----------------
Console.WriteLine("Creating comApiProvider ...");
//
// Attention: this object will provide COM infrastructure!
//
lcpi.lib.com.IComApiProvider
comApiProvider
=new lcpi.lib.com.LcpiComApiProvider
(comApiProviderDir);
//-----------------
OleDbServices oledbServices=null;
OleDbConnection cn=null;
OleDbTransaction tr=null;
OleDbCommand cmd=null;
try // [finally]
{
Console.WriteLine("Creating LCPI OLE DB Services ...");
oledbServices
=OleDbServices.CreateWithComApiProvider
(comApiProvider);
//-----------------
Console.WriteLine("Creating a connection ...");
cn=oledbServices.CreateConnection(c_cn_str);
//-----------------
Console.WriteLine("Openning a connection ...");
cn.Open();
//-----------------
Console.WriteLine("Starting a transaction ...");
tr=cn.BeginTransaction();
//-----------------
Console.WriteLine("Executing a command ...");
cmd=new OleDbCommand("select COUNT(*) from employee",cn,tr);
var cEmployees=cmd.ExecuteScalar();
Console.WriteLine("The count of employees: {0}",cEmployees);
//-----------------
Console.WriteLine("Committing ...");
tr.Commit();
}
finally
{
lcpi.lib.structure.DisposeUtils.Exec(cmd);
lcpi.lib.structure.DisposeUtils.Exec(tr);
lcpi.lib.structure.DisposeUtils.Exec(cn);
lcpi.lib.structure.DisposeUtils.Exec(oledbServices);
}//finally
}
catch(Exception e)
{
//Note: exception can holds a pointer with COM-object
resultCode=1;
Console.WriteLine("");
Console.WriteLine("ERROR: {0} - {1}",e.Source,e.Message);
}//catch
return resultCode;
}//Main
//Helper interface ------------------------------------------------------
private static string Helper__GetRootDirOfLcpiComApiProvider()
{
var asmPath
=System.Reflection.Assembly.GetExecutingAssembly().Location;
var curAsmDir
=System.IO.Path.GetDirectoryName(asmPath);
switch(IntPtr.Size)
{
case 4:
return System.IO.Path.Combine(curAsmDir,"private-w32");
case 8:
return System.IO.Path.Combine(curAsmDir,"private-w64");
default:
throw new ApplicationException("Unexpected IntPtr.Size!");
}//switch
}//Helper__GetRootDirOfLcpiComApiProvider
}//class Program
////////////////////////////////////////////////////////////////////////////////
}//namespace Sample_0031
Вывод.
