ADO 连接字符串






4.92/5 (143投票s)
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/IPdbmsspxn
Win32 SPX/IPXdbmsvinn
Win32 Banyan Vinesdbmsrpcn
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_qualifier
和Table_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 数据链接连接
strConnection = _T("File Name=c:\\DataBasePath\\DatabaseName.udl;");
如果要创建数据链接文件,可以创建一个新的空文本文件,将其扩展名更改为 .udl,然后双击该文件,操作系统将为您调用数据链接应用程序。
历史
- 2002 年 7 月 24 日:初始版本