使用OleDB需要什么

本文关键字:什么 OleDB 使用 | 更新日期: 2023-09-27 18:01:37

我对使用OleDB的要求感到困惑。

在应用程序中,我使用OleDB读取XLS文件。之后,我用ClickOnce (Visual studio 2012, . net 4.0)发布了我的项目。但是这个应用程序能在只安装。net 4.0的Windows系统上运行吗?还是其他人因为内部使用OleDB而必须安装MS Office ?

使用OleDB需要什么

OLEDB是一个访问数据源的API。

    为了使用它,你需要一个OLE DB Provider
  • 一个OLE DB Provider是一个简单的COM对象。

您可能已经在您的机器上注册了许多OLE DB提供者COM类:

| Name                                                         | VersionIndependentProgID            | ProgID                   | clsid                                  |
|--------------------------------------------------------------|-------------------------------------|--------------------------|----------------------------------------|
| Microsoft OLE DB Provider for SQL Server                     | SQLOLEDB                            | SQLOLEDB.1               | {0C7FF16C-38E3-11d0-97AB-00C04FC2AD98} |
| Microsoft OLE DB Provider for Analysis Services 9.0          | MSOLAP                              | MSOLAP.3                 | {176941F9-18E8-47D6-860D-006FF2655608} |
| Microsoft OLE DB Provider For Data Mining Services           | MSDMine                             | MSDMine.1                | {2CB6C2D3-DD7C-11D2-AFE4-00105A994724} |
| MSDataShape                                                  | MSDataShape                         | MSDataShape.1            | {3449A1C8-C56C-11D0-AD72-00C04FC29863} |
| SQL Server Native Client 11.0                                | SQLNCLI11                           | SQLNCLI11.1              | {397C2819-8272-4532-AD3A-FB5E43BEAA39} |
| Microsoft.WINDOWS.SQLLITE.OLEDB.4.0                          |                                                                | {3A5B4772-7946-4E58-9310-B0D423749C1D} |
| Microsoft Office 12.0 Access Database Engine OLE DB Provider |                                     | Microsoft.ACE.OLEDB.12.0 | {3BE786A0-0366-4F5C-9434-25CF162E475E} |
| OLE DB Provider for Microsoft Directory Services             |                                     | ADsDSOObject             | {549365d0-ec26-11cf-8310-00aa00b505db} |
| Microsoft OLE DB Provider for Search                         | Search.CollatorDSO                  | Search.CollatorDSO.1     | {9E175B8B-F52A-11D8-B9A5-505054503030} |
| Microsoft OLE DB Provider for OLAP Services 8.0              | MSOLAP                              | MSOLAP.2                 | {A07CCD0C-8148-11D0-87BB-00C04FC33942} |
| Microsoft OLE DB Provider for ODBC Drivers                   | MSDASQL                             | MSDASQL.1                | {c8b522cb-5cf3-11ce-ade5-00aa0044773d} |
| Microsoft Jet 4.0 OLE DB Provider                            | Microsoft.Jet.OLEDB                 | Microsoft.Jet.OLEDB.4.0  | {dee35070-506b-11cf-b1aa-00aa00b8de95} |
| Microsoft OLE DB Simple Provider                             | MSDAOSP                             | MSDAOSP.1                | {dfc8bdc0-e378-11d0-9b30-0080c7e9fe95} |
| Microsoft OLE DB Provider for Oracle                         | MSDAORA                             | MSDAORA.1                | {e8cc4cbe-fdff-11d0-b865-00a0c9081c1d} |

OLE DB api是相当痛苦的

OLE DB的API界面过于复杂;有人继续说:

//Create an SQL Server OLEDB Provider
IDBInitialize db = CreateComObject("SQLOLEDB");
db.Initialize();
IDBCreateCommand createCommand = (dataSource as IDBCreateSession).CreateSession(IDBCreateCommand);

ICommandText commandText = createCommand.CreateCommand();
commandText.CommandText = "SELECT 'Hello, world!'";
IRowSet rs = commandText.Execute();

ADO使它更容易

OLE DB是一个非常复杂的API。ADO的出现让它变得简单多了。

Connection conn = new Connection();
conn.ConnectionString = connectionString;
conn.Open();
Recordset rs = new Recordset();
rs.ActiveConnection = conn;
rs.CommandText = "SELECT 'Hello, world!'";
rs.Open();

ADO.net可以使用OLEDB提供程序

DbConnection conn = new OleDbConnection();
conn.ConnectionString = connectionString;
conn.Open();
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT 'Hello, world!'";
IDataReader rdr = cmd.ExecuteReader();

所有这些都使用OLEDB

这些都是使用 OLEDB的代码示例(从内存中动态编写)。

重要的是你必须知道你想要的是哪个oledb Provider
  • SQL Server: SQLOLEDB (随Windows发货)
  • SQL Server(本地客户端): SQLNCLI (原始,已弃用)
  • SQL Server(本地客户端): SQLNCLI10 (version 10,已弃用)
  • SQL Server(本地客户端): SQLNCLI11 (版本11,已弃用)
  • SQL Server: MSOLEDBSQL (随SQL Server发货)
  • Windows搜索: Search.CollatorDSO
  • Jet: Microsoft.Jet.OLEDB

一旦你知道了你想要的Provider,你就可以在连接字符串中找到它。

回答问题

使用OLEDB需要什么?

    提供者
  • 你必须使用它