明天测试一下ado连mdb,vs过期不能用了,无法测试sql,等版主测试吧.。不行就用odbc连接。
mdb测试结果:
#include <stdio.h>
#include <assert.h>
#include <tchar.h>
// TODO: 在此处引用程序需要的其他头文件
#import "c:\program files\common files\system\ole db\oledb32.dll" no_namespace
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
void main()
{
IDataSourceLocatorPtr Idslp = NULL;
_ConnectionPtr ado_conn = NULL;
_RecordsetPtr
ado_rs = NULL;
::CoInitialize(NULL);
Idslp.CreateInstance(__uuidof(DataLinks));
ado_conn = Idslp->PromptNew(); //弹出数据库源选择对话框
if(ado_conn != NULL){
printf("ConnectString : %s\n", (char *)ado_conn->ConnectionString); //输出连结字符串
}
try{
HRESULT hr = ado_conn->Open("", "", "", -1);
if(SUCCEEDED(hr))
printf("open successful\n");
ado_rs.CreateInstance(__uuidof(Recordset));
ado_rs->Open("SELECT * FROM student",ado_conn.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t Holder;
while(!ado_rs->adoEOF)
{
Holder = ado_rs->GetCollect("pass"); //查询字段
if(Holder.vt!=VT_NULL)
printf("%s\n",(char*)_bstr_t(Holder));
ado_rs->MoveNext();
}
}
catch(_com_error &e)
{
_bstr_t bstrDescription(e.Description());
printf("\tDescription = %s\n", (LPCSTR)bstrDescription);
}
ado_rs.Release();
if(ado_conn->State) ado_conn->Close();
ado_conn.Release();
Idslp.Release();
::CoUninitialize();
}
-------------------------------------------------------------------------
ConnectString : Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\VC6_prg\test12\m
ydb.mdb;Persist Security Info=False
open successful
123
456
是你
Press any key to continue
可以联结上,并自动显示连结字符串,你根据弹出的选择数据源框进行SQL连结测试,完了就会出现不同的字符串。拷下来就好了。
不过vs编译会出现4192警告,解释办法查msdn, Com代码看着很蛋疼。
[此贴子已经被作者于2015-12-22 13:09编辑过]