关于ADO与access数据库连接的问题求教(都研究了八天了) m_adoconn.OnInitADOConn("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\Administrator\\Desktop\\ado.mdb;Persist Security Info=False");这么改,路径得加双斜杆 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你个例子:m_pConn->Open("Provider=SQLOLEDB.1;Server=PC-201012170947\\WINCC;DataBase=;UID=sa;PWD=","","",adConnectUnspecified); 这是SQL 2000的连接字符串,你把它加到下面的相应的语句里:#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")头文件里类里:_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;_CommandPtr m_pCommand;CPP文件里:BOOL CDatabaseDll::OpenDatabaseFun(_ConnectionPtr pConnection,_RecordsetPtr pRecordset,_CommandPtr pCommand){BOOL Result=TRUE;HRESULT hr;try { hr = pConnection.CreateInstance("ADODB.Connection");///创建Connection对象if(SUCCEEDED(hr)) { pConnection->ConnectionTimeout = 10; // hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\NW.mdb","", "", adModeUnknown);//这是OFFICE2003以下的hr = pConnection->Open("Provider=Microsoft.Ace.Oledb.12.0;Data Source=D:\\bagayalu.accdb;Jet OLEDB:Database Password=123456","", "", adModeUnknown);//这是OFFICE2007以上的,包括OFFICE2010,这个连接字符串就是在OFFICE2010下用的,没问题 //m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//设置默认数据库 pCommand.CreateInstance(__uuidof(Command));pCommand->CommandTimeout = 5;pCommand->ActiveConnection = pConnection;}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);///显示错误信息Result=FALSE;return Result;} _variant_t var;float v1,v2,v3,v4;CString Re;pRecordset.CreateInstance(__uuidof(Recordset));try{pRecordset->Open("SELECT * FROM 表1",// 查询DemoTable表中所有字段 pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针 adOpenDynamic,adLockOptimistic,adCmdText);while(!m_pRecordset->adoEOF) { var = m_pRecordset->GetCollect("v1"); if(var.vt != VT_NULL) v1=var.fltVal;// strName = (LPCSTR)_bstr_t(var); var = m_pRecordset->GetCollect("v2"); if(var.vt != VT_NULL) v2=var.fltVal; var = m_pRecordset->GetCollect("v3"); if(var.vt != VT_NULL) v3=var.fltVal; var = m_pRecordset->GetCollect("v4"); if(var.vt != VT_NULL) v4=var.fltVal; var = m_pRecordset->GetCollect("re"); if(var.vt != VT_NULL)Re = (LPCSTR)_bstr_t(var); m_pRecordset->MoveNext(); } }catch(_com_error *e){AfxMessageBox(e->ErrorMessage());Result=FALSE;return Result;}return Result 回复一楼,你说那种方法我已经试过了,不管用的啊,我是在win7系统下用的vc++6.0 http://blog.csdn.net/zyq5945/archive/2010/05/13/5586423.aspx 你的StdAfx.h中有没有包含#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace\ rename("EOF","adoEOF")rename("BOF","adoBOF") //导入ADO动态链接库 Provider=SQLOLEDB改为Provider=SQLOLEDB.1 在CView继承类中设置定时器问题 如何对一个指定的窗口 截图 编译后不能双击运行,只能在cmd下运行!?? 学的迷茫,肯请高手指点一二 如何避免程序假死现象? MFC 如何在MainFrame里获取其他View的指针? 急 关于radio button的简单问题,今晚结贴 在那里可以下载VC。6的补丁(就是类友元) 头痛,Treeview control点击问题 运行到InternetCrackUrl怎么总是出错?? 关于VC++控制PPT时运行出错(在线等答案) 鼠标响应程序,显示鼠标当前位置的程序问题
m_pConn->Open("Provider=SQLOLEDB.1;Server=PC-201012170947\\WINCC;DataBase=;UID=sa;PWD=","","",adConnectUnspecified);
这是SQL 2000的连接字符串,你把它加到下面的相应的语句里:#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
头文件里类里:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
_CommandPtr m_pCommand;CPP文件里:
BOOL CDatabaseDll::OpenDatabaseFun(_ConnectionPtr pConnection,_RecordsetPtr pRecordset,_CommandPtr pCommand)
{
BOOL Result=TRUE;
HRESULT hr;
try
{
hr = pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
pConnection->ConnectionTimeout = 10;
// hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\NW.mdb","", "", adModeUnknown);//这是OFFICE2003以下的
hr = pConnection->Open("Provider=Microsoft.Ace.Oledb.12.0;Data Source=D:\\bagayalu.accdb;Jet OLEDB:Database Password=123456","", "", adModeUnknown);//这是OFFICE2007以上的,包括OFFICE2010,这个连接字符串就是在OFFICE2010下用的,没问题
//m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//设置默认数据库
pCommand.CreateInstance(__uuidof(Command));
pCommand->CommandTimeout = 5;
pCommand->ActiveConnection = pConnection;
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
Result=FALSE;
return Result;
}
_variant_t var;
float v1,v2,v3,v4;
CString Re;
pRecordset.CreateInstance(__uuidof(Recordset));
try
{
pRecordset->Open("SELECT * FROM 表1",// 查询DemoTable表中所有字段
pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("v1");
if(var.vt != VT_NULL)
v1=var.fltVal;
// strName = (LPCSTR)_bstr_t(var); var = m_pRecordset->GetCollect("v2");
if(var.vt != VT_NULL)
v2=var.fltVal;
var = m_pRecordset->GetCollect("v3");
if(var.vt != VT_NULL)
v3=var.fltVal;
var = m_pRecordset->GetCollect("v4");
if(var.vt != VT_NULL)
v4=var.fltVal;
var = m_pRecordset->GetCollect("re");
if(var.vt != VT_NULL)
Re = (LPCSTR)_bstr_t(var);
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
Result=FALSE;
return Result;
}
return Result
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace\
rename("EOF","adoEOF")rename("BOF","adoBOF") //导入ADO动态链接库
Provider=SQLOLEDB.1