Дата публикации: 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
Вывод.