65.9K
CodeProject 正在变化。 阅读更多。
Home

ADO 连接字符串

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.92/5 (143投票s)

2002 年 5 月 20 日

CPOL

8分钟阅读

viewsIcon

3349562

ODBC DSN 连接字符串列表。

目录

概述

通常,在尝试使用数据库时,第一步是打开它。您可以找到几种类型的数据库,每种都有不同的连接模式。当您尝试连接数据库时,有时您不知道必须使用的正确连接字符串。这就是我写这篇文章的原因。我希望编译大多数已知数据库的连接字符串...

ODBC 无 DSN 连接

dBASE 的 ODBC 驱动程序

strConnection = _T("Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;"
                   "Dbq=c:\\DatabasePath;");

注意:您必须在 SQL 语句中指定文件名... 例如

CString strQuery = _T("Select Name, Address From Clients.dbf");

Excel 的 ODBC 驱动程序

strConnection = _T("Driver={Microsoft Excel Driver (*.xls)};DriverId=790;"
    bq=C:\\DatabasePath\\DBSpreadSheet.xls;DefaultDir=c:\\databasepath;");

文本的 ODBC 驱动程序

strConnection = _T("Driver={Microsoft Text Driver (*.txt; *.csv)};"
        "Dbq=C:\\DatabasePath\\;Extensions=asc,csv,tab,txt;");

如果您正在使用制表符分隔文件,则必须创建 schema.ini 文件,并且必须在连接字符串中通知 Format=TabDelimited 选项。

注意:您必须在 SQL 语句中指定文件名... 例如

CString strQuery = _T("Select Name, Address From Clients.csv");

Visual FoxPro

如果您正在使用数据库容器,连接字符串如下

strConnection = _T("Driver={Microsoft Visual Foxpro Driver};UID=;"
    ourceType=DBC;SourceDB=C:\\DatabasePath\\MyDatabase.dbc;Exclusive=No");

如果您在没有数据库容器的情况下工作,则必须将 SourceType 参数更改为 DBF,如下面的连接字符串所示

strConnection = _T("Driver={Microsoft Visual Foxpro Driver};UID=;"
    "SourceType=DBF;SourceDB=C:\\DatabasePath\\MyDatabase.dbc;Exclusive=No");

Access 的 ODBC 驱动程序

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
        "Dbq=c:\\DatabasePath\\dbaccess.mdb;Uid=;Pwd=;");

如果您正在使用工作组(系统数据库):您需要提供系统数据库路径用户名及其密码。为此,您有两种解决方案:在连接字符串中或在 open 操作时提供用户密码。例如

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
        "Dbq=C:\\VC Projects\\ADO\\Samples\\AdoTest\\dbTestSecurity.mdb;"
        "SystemDB=C:\\Program Files\\Microsoft Office\\Office\\SYSTEM.mdw;"
        "Uid=Carlos Antollini;Pwd=carlos");

或者可能是

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
        "Dbq=C:\\VC Projects\\ADO\\Samples\\AdoTest\\dbTestSecurity.mdb;"
        "SystemDB=C:\\Program Files\\Microsoft Office\\Office\\SYSTEM.mdw;");
if(pDB.Open(strConnection, "DatabaseUser", "DatabasePass"))
{
    DoSomething();
    pDB.Close();
}

如果您想以独占模式打开

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
        "Dbq=c:\\DatabasePath\dbaccess.mdb;Exclusive=1;");

SQL Server 的 ODBC 驱动程序

对于标准安全性

strConnection = _T("Driver={SQL Server};Server=MyServerName;"
        "Trusted_Connection=no;"
        "Database=MyDatabaseName;Uid=MyUserName;Pwd=MyPassword;");

对于受信任连接安全性(Microsoft Windows NT 集成安全性)

strConnection = _T("Driver={SQL Server};Server=MyServerName;"
     "Database=myDatabaseName;Uid=;Pwd=;");

此外,您可以使用参数 Trusted_Connection,它表示您正在使用 Microsoft Windows NT 身份验证模式来授权用户访问 SQL Server 数据库。例如

strConnection = _T("Driver={SQL Server};Server=MyServerName;"
    "Database=MyDatabaseName;Trusted_Connection=yes;");

如果 SQL Server 在同一台计算机上运行,您可以将服务器名称替换为单词 (local),如下例所示

strConnection = _T("Driver={SQL Server};Server=(local);"
        "Database=MyDatabaseName;Uid=MyUserName;Pwd=MyPassword;");

如果您想连接到远程 SQL Server,则必须提供要使用的地址、端口和网络库

Address 参数必须是 IP 地址并包含端口。Network 参数可以是以下之一

  • dbnmpntw Win32 命名管道
  • dbmssocn Win32 Winsock TCP/IP
  • dbmsspxn Win32 SPX/IPX
  • dbmsvinn Win32 Banyan Vines
  • dbmsrpcn Win32 多协议 (Windows RPC)

有关更多信息,请参阅 Q238949

strConnection = _T("Driver={SQL Server};Server=130.120.110.001;"
     "Address=130.120.110.001,1052;Network=dbmssocn;Database=MyDatabaseName;"
     "Uid=myUsername;Pwd=myPassword;");

Oracle 的 ODBC 驱动程序

对于 Microsoft 当前的 Oracle ODBC 驱动程序

strConnect = _T("Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;"
        "Uid=MyUsername;Pwd=MyPassword;");

对于 Microsoft 较旧的 Oracle ODBC 驱动程序

strConnect = _T("Driver={Microsoft ODBC Driver for Oracle};"
     "ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;");

MySQL 的 ODBC 驱动程序

如果要连接到本地数据库,可以使用如下连接字符串

strConnect = _T("Driver={MySQL ODBC 3.51 Driver};Server=localhost;"
     "Database=MyDatabase;User=MyUserName;Password=MyPassword;Option=4;");

如果您想连接到远程数据库,则需要在 Server 参数中指定服务器名称或其 IP。如果端口与 3306(默认端口)不同,则必须指定它。

strConnect = _T("Driver={mySQL ODBC 3.51 Driver};Server=MyRemoteHost;"
     "Port=3306;Option=4;Database=MyDatabase;Uid=MyUsername;Pwd=MyPassword;");

参数 Option 可以是以下一个或多个值

  • 1 - 客户端无法处理 MyODBC 返回列的实际宽度。
  • 2 - 客户端无法处理 MySQL 返回受影响行的真实值。如果设置此标志,则 MySQL 返回“找到行”而不是。必须使用 MySQL 3.21.14 或更高版本才能使其工作。
  • 4 - 在c:\myodbc.log中生成调试日志。这与在AUTOEXEC.BAT中放入MYSQL_DEBUG=d:t:O,c::\myodbc.log相同。
  • 8 - 不为结果和参数设置任何数据包限制。
  • 16 - 即使驱动程序想要提示,也不提示问题。
  • 32 - 启用或禁用动态光标支持。MyODBC 2.50 中不允许这样做。
  • 64 - 忽略在“database.table.column”中使用数据库名称。
  • 128 - 强制使用 ODBC 管理器光标(实验性)。
  • 256 - 禁用扩展获取的使用(实验性)。
  • 512 - 将 CHAR 字段填充到完整的列长度。
  • 1024 - SQLDescribeCol() 将返回完全限定的列名。
  • 2048 - 使用压缩的服务器/客户端协议。
  • 4096 - 告诉服务器忽略函数名后和 '(' 前的空格(PowerBuilder 需要)。这将使所有函数名成为关键字!
  • 8192 - 使用命名管道连接到在 NT 上运行的 MySQLd 服务器。
  • 16384 - 将 LONGLONG 列更改为 INT 列(某些应用程序无法处理 LONGLONG)。
  • 32768 - 从 SQLTables 返回“user”作为 Table_qualifierTable_owner(实验性)。
  • 65536 - 从 my.cnf 中的客户端和 ODBC 组读取参数。
  • 131072 - 添加一些额外的安全检查(不应该需要,但...)。

如果您希望有多个选项,您应该添加上述标志!例如:16 + 1024 = 1030,然后使用 Option= 1030;

有关更多信息,请访问 MyODBC 参考手册

AS400 的 ODBC 驱动程序

strConnect = _T("Driver={Client Access ODBC Driver (32-bit)};System=myAS400;"
      "Uid=myUsername;Pwd=myPassword;");

SyBase 的 ODBC 驱动程序

strConnect = _T("Driver={Sybase System 10};Srvr=MyServerName;Uid=MyUsername;"
       "Pwd=myPassword;");

Sybase SQL AnyWhere 的 ODBC 驱动程序

strConnect = _T("ODBC;Driver=Sybase SQL Anywhere 5.0;"
    "DefaultDir=C:\\DatabasePath\;Dbf=C:\\SqlAnyWhere50\\MyDatabase.db;"
    "Uid=MyUsername;Pwd=MyPassword;Dsn=\"\";");

DSN 连接

ODBC DSN

strConnect = _T("DSN=MyDSN;Uid=MyUsername;Pwd=MyPassword;");

OLE DB 提供程序

SQL Server 的 OLE DB 提供程序

对于标准安全性

strConnect = _T("Provider=sqloledb;Data Source=MyServerName;"
        "Initial Catalog=MyDatabaseName;"
        "User Id=MyUsername;Password=MyPassword;");

对于受信任连接安全性(Microsoft Windows NT 集成安全性)

strConnect = _T("Provider=sqloledb;Data Source=MyServerName;"
        "Initial Catalog=MyDatabaseName;"
        "Integrated Security=SSPI;");

如果要连接到“命名实例”(SQL Server 2000),则必须指定 Data Source=Servere Name\Instance Name,如下例所示

strConnect = _T("Provider=sqloledb;Data Source=MyServerName\MyInstanceName;"
    "Initial Catalog=MyDatabaseName;User Id=MyUsername;Password=MyPassword;");

如果要连接到在同一台计算机上运行的 SQL Server,则必须在 Data Source 中指定关键字 (local),如下例所示

strConnect = _T("Provider=sqloledb;Data Source=(local);"
        "Initial Catalog=myDatabaseName;"
        "User ID=myUsername;Password=myPassword;");

连接到远程计算机上运行的 SQL Server(通过 IP 地址)

strConnect = _T("Provider=sqloledb;Network Library=DBMSSOCN;"
        "Data Source=130.120.110.001,1433;"
        "Initial Catalog=MyDatabaseName;User ID=MyUsername;"
        "Password=MyPassword;");

MySQL 的 OLE DB 提供程序 (Todd Smith)

strConnection = _T("Provider=MySQLProv;Data Source=test");

其中 test 是 MySQL 数据库的名称。此外,您可以通过以下连接字符串替换数据库的名称:server=localhost;DB=test

AS400 的 OLE DB 提供程序

strConnect = _T("Provider=IBMDA400;Data source=myAS400;User Id=myUsername;"
     "Password=myPassword;");

有关更多信息,请参阅:使用 AS/400 和 VSAM 的 OLE DB 提供程序

Active Directory 的 OLE DB 提供程序

strConnect = _T("Provider=ADSDSOObject;User Id=myUsername;Password=myPassword;");

有关更多信息,请参阅:Microsoft Active Directory 服务的 Microsoft OLE DB 提供程序

DB2 的 OLE DB 提供程序

如果您正在使用 TCP/IP 连接

strConnect = _T("Provider=DB2OLEDB;Network Transport Library=TCPIP;"
        "Network Address=130.120.110.001;"
        "Initial Catalog=MyCatalog;Package Collection=MyPackageCollection;"
        "Default Schema=MySchema;User ID=MyUsername;Password=MyPassword;");

如果您正在使用 APPC 连接

strConnect = _T("Provider=DB2OLEDB;APPC Local LU Alias=MyLocalLUAlias;"
        "APPC Remote LU Alias=MyRemoteLUAlias;Initial Catalog=MyCatalog;"
        "Package Collection=MyPackageCollection;Default Schema=MySchema;"
        "User ID=MyUsername;Password=MyPassword;");

有关更多信息,请参阅:使用 DB2 的 OLE DB 提供程序

Microsoft Jet 的 OLE DB 提供程序

  • 使用 JET OLE DB 提供程序连接到 Access 文件

    使用标准安全性

    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;"
            "Data Source=C:\\DatabasePath\\MmDatabase.mdb;"
            "User Id=admin;Password=;");

    如果您正在使用工作组(系统数据库)

    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;"
            "Data Source=C:\\DataBasePath\\mydb.mdb;"
            "Jet OLEDB:System Database=MySystem.mdw;");
    pRs.Open(strConnect, "MyUsername", "MyPassword");
  • 使用 JET OLE DB 提供程序连接到 Excel 电子表格
    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;"
            "Data Source=C:\\DatabasePath\\DBSpreadSheet.xls;"
            "Extended Properties=\"\"Excel 8.0;HDR=Yes;\"\";");

    注意:如果 "HDR=Yes",提供程序将不会将选择的第一行包含在记录集中。如果 "HDR=No",提供程序将单元格范围(或命名范围)的第一行包含在 recordset 中。

    有关更多信息,请参阅:Q278973

  • 使用 JET OLE DB 提供程序连接到文本文件
    strConnect = 
            _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\DatabasePath\\;"
            "Extended Properties=\"\"text;"
            "HDR=Yes;FMT=Delimited;\"\";");

    注意:您必须在 SQL 语句中指定文件名... 例如

    CString strQuery = _T("Select Name, Address From Clients.txt");

    有关更多信息,请参阅:Q262537

  • 使用 JET OLE DB 提供程序连接到 Outlook 2000 个人邮箱: (J. Cardinal)
    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Outlook 9.0;"
          "MAPILEVEL=;DATABASE=C:\\Temp\\;")

    c:\temp 替换为任何临时文件夹。当您打开它时,它将在该文件夹中创建一个架构文件,显示所有可用字段。空白 MAPILEVEL 表示文件夹的顶层)。

  • 通过 JET 连接到 Exchange 邮箱: (J. Cardinal)
    strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Exchange 4.0;"
          "MAPILEVEL=Mailbox - Pat Smith|;DATABASE=C:\\Temp\\;")

    您必须将 c:\temp 替换为任何临时文件夹。

    Pat Smith 替换为邮箱的名称,并且您必须保留竖线字符 | 来指示文件夹的顶层。如果访问特定文件夹,请将子文件夹放在竖线后。

    注意:您可以像数据库一样对邮件存储执行查询... 例如

    CString strQuery = _T("SQL "SELECT Contacts.* FROM Contacts;");

    有关更多信息,请参阅:Jet 4.0 Exchange/Outlook IISAM

ODBC 数据库的 OLE DB 提供程序

如果要连接到 Microsoft Access 数据库

strConnect = _T("Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb)};"
        "Dbq=c:\\DatabasePath\\MyDatabase.mdb;Uid=MyUsername;Pwd=MyPassword;");

如果要连接到 SQL Server 数据库

strConnect = _T("Provider=MSDASQL;Driver={SQL Server};Server=MyServerName;"
        "Database=MyDatabaseName;Uid=MyUsername;Pwd=MyPassword;");

如果要使用 DSN

strConnect = _T("Provider=MSDASQL;PersistSecurityInfo=False;"
        "Trusted_Connection=Yes;"
        "Data Source=MyDSN;catalog=MyDatabase;");

有关更多信息,请参阅:Microsoft OLE DB Provider for ODBC

OLAP 的 OLE DB 提供程序

Microsoft® OLE DB for Online Analytical Processing (OLAP) 是一组对象和接口,它扩展了 OLE DB 访问多维数据存储的能力。

strConnect = _T("Provider=MSOLAP;Data Source=MyOLAPServerName;"
     "Initial Catalog=MyOLAPDatabaseName;");

使用 HTTP 连接

此功能使客户端应用程序能够通过在客户端应用程序的连接字符串中指定 URL,通过 Microsoft® Internet Information Services (IIS) 连接到 Analysis 服务器。此连接方法允许 PivotTable® Service 穿透防火墙或代理服务器连接到 Analysis 服务器。一个特殊的 Active Server Pages (ASP) 页面 Msolap.asp 能够通过 IIS 建立连接。此文件所在的目录必须作为 URL 的一部分包含在连接到服务器时(例如,http://www.myserver.com/myolap/)。

使用 URL

strConnect = _T("Provider=MSOLAP;Data Source=http://MyOLAPServerName/;"
     "Initial Catalog=MyOLAPDatabaseName;");

使用 SSL

strConnect = _T("Provider=MSOLAP;Data Source=https://MyOLAPServerName/;"
     "Initial Catalog=MyOLAPDatabaseName;");

有关更多信息,请参阅:OLE DB for OLAP使用 HTTP 连接

Oracle 的 OLE DB 提供程序

Oracle 的 OLE DB 提供程序(来自 Microsoft)

Microsoft OLE DB Provider for Oracle 允许 ADO 访问 Oracle 数据库。

strConnect = _T("Provider=MSDAORA;Data Source=MyOracleDB;User Id=myUsername;"
     "Password=myPassword;");

有关更多信息,请参阅:Microsoft OLE DB Provider for Oracle

Oracle 的 OLE DB 提供程序(来自 Oracle)

对于标准安全性

strConnect = _T("Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;"
        "User Id=myUsername;Password=myPassword;");

对于受信任连接

  • 操作系统验证连接将用户 ID 设置为“/
    strConnect = _T("Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;"
       "User Id=/;Password=;");
  • 使用 OSAuthent 进行操作系统验证连接
    strConnect = _T("Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;")

    注意:“Data Source=”必须设置为当前使用的命名方法已知的相应 Net8 名称。例如,对于本地命名,它是 tnsnames.ora 文件中的别名;对于 Oracle Names,它是 Net8 服务名称。

有关更多信息,请参阅:Oracle Provider for OLE DB 开发人员指南

Visual FoxPro 的 OLE DB 提供程序

strConnect = _T("Provider=vfpoledb;"
     "Data Source=C:\\DatabasePath\\MyDatabase.dbc;");

有关更多信息,请参阅:Microsoft OLE DB Provider for Visual FoxPro

索引服务器的 OLE DB 提供程序 (Chris Maunder)

strConnect = _T("provider=msidxs;Data Source=MyCatalog;");

有关更多信息,请参阅:Microsoft Indexing Service 的 Microsoft OLE DB 提供程序

OLE DB 数据链接连接

数据链接文件 - UDL

strConnection = _T("File Name=c:\\DataBasePath\\DatabaseName.udl;");

如果要创建数据链接文件,可以创建一个新的空文本文件,将其扩展名更改为 .udl,然后双击该文件,操作系统将为您调用数据链接应用程序。

[ Data Link Application ]

历史

  • 2002 年 7 月 24 日:初始版本
© . All rights reserved.