可以用代码来动态注册数据源。
如加入 c:\temp\volume.mdb,注册名为ADOTestSQLConfigDataSource( NULL, ODBC_ADD_SYS_DSN,
"Microsoft Access Driver (*.mdb)\0",
"DSN=ADOTest\0",
"DBQ=C:\\Temp\\volume.mdb\0DEFAULTDIR=C:\\Temp\0\0" );\0 为添加的“零标记”。
这是我自己的一段代码,希望能对你有帮助。
如加入 c:\temp\volume.mdb,注册名为ADOTestSQLConfigDataSource( NULL, ODBC_ADD_SYS_DSN,
"Microsoft Access Driver (*.mdb)\0",
"DSN=ADOTest\0",
"DBQ=C:\\Temp\\volume.mdb\0DEFAULTDIR=C:\\Temp\0\0" );\0 为添加的“零标记”。
这是我自己的一段代码,希望能对你有帮助。
多了一个逗号。
这是在系统DSN中的,
更为安全的是在户DSN中。如下
if(!SQLConfigDataSource( NULL, ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb)\0",
"DSN=ODBCTest\0"
"DBQ=C:\\My Documents\\db1.mdb\0DEFAULTDIR=C:\\My Documents\0" ))
{
AfxMessageBox("无法创建数据源");
.
.
}
假设在C:\My Documents下用Access自建了一个的db1.mdb。
我告诉你一个方法,绝对好用,不管是什么ODBC的字符串都可以知道。
但是是从 jyu1221(天同) 处看来的
1。先建立一个文件型的DSN(如:1.dsn)。
2。然后使用记事本打开该文件。
如:文件内容为:
-----------------------------------------------------------
[ODBC]
DRIVER=Driver do Microsoft Access (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=C:\Documents and Settings\Administrator\My Documents
DBQ=C:\Documents and Settings\Administrator\My Documents\zwds.mdb
-----------------------------------------------------------
3.把从DRIVER开始的所有字符COPY到程序中,然后用;代替回车。
DRIVER=Driver do Microsoft Access (*.mdb);UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL=MS Access;DriverId=25;DefaultDir=C:\Documents and Settings\Administrator\My Documents;DBQ=C:\Documents and Settings\Administrator\My Documents\zwds.mdb;
4.接下来你应该知道怎么做了。
CDatabase db;
if(db.OpenEx("DRIVER=Driver do Microsoft Access (*.mdb);UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL=MS Access;DriverId=25;DefaultDir=C:\Documents and Settings\Administrator\My Documents;DBQ=C:\Documents and Settings\Administrator\My Documents\zwds.mdb",
CDatabase::openReadOnly|CDatabase::noOdbcDialog)==0)
{
ErrorBox("ODBC open failed!");
}
通过此方法,可以很容易的知道连接一个不太熟悉的数据库。
short int iOut;
sr = SQLDriverConnect(hConnection,NULL,
(SQLCHAR *)pszConnection, SQL_NTS,
(SQLCHAR *)pszOut,SQL_NTS,
&iOut,SQL_DRIVER_NOPROMPT);
//hConnection已经分配过