请教一下VC该怎样访问数据库?我已经连接成功,为什么老是访问不成功?

头文件里定义了:#import"C:\ProgramFiles\CommonFiles\System\ado\msado15.dll"named_guidsrename(... 头文件里定义了:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")

文件头部定义了:
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
_RecordsetPtr m_pRecordset;

对话框初始化里有:
HRESULT hr;

try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);

}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息

}

然后在一个OnButton事件里放入了访问数据库的语句,就是简单的一句SQL:
// m_AccessList.ResetContent();
m_pConnection.CreateInstance(_uuidof(Connection)); //初始化Connection指针
m_pRecordset.CreateInstance(_uuidof(Recordset));//初始化Recordset指针

try
{
//m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);
m_pConnection->Open("DSN=test.mdb","","",0);
CString strSql="insert into 定位信息 values('20','30','40')";
BSTR bstrSQL = strSql.AllocSysString();
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecordset->Close();
m_pConnection->Close();
}
catch (_com_error e)//异常处理
{
AfxMessageBox(e.ErrorMessage());
}
// m_pRecordset->Close();
// m_pConnection->Close();
m_pRecordset = NULL;
m_pConnection = NULL;

编译没错,为什么执行这个button时老是有错误:弹出对话框“未知的错误”。经多次反复改动均不行,请大虾们不吝赐教!
若能帮我解决,追加100分。请大侠们指教啊!
一楼:试过了,还是不行,问题应该不在这儿
展开
 我来答
silvergingko
2009-10-22 · TA获得超过5945个赞
知道小有建树答主
回答量:688
采纳率:0%
帮助的人:870万
展开全部
这句估计是错的。下个断言试试:
ASSERT(m_pConnection->Open("DSN=test.mdb","","",0) == S_OK);

估计通不过。
楼主知道DSN是什么东西吗?
DSN==DATA SOURCE NAME即数据源名称。连接数据局库一般通过数据源来告知ADO我们感兴趣的数据库。在程序中特指数据源又是依靠DSN来表示的。DSN不是随数据库的创建默认就存在的。一般是创建了数据库,然后到WINDOWS控制面板中找到"数据源(ODBC)"工具,通过"数据源(ODBC)"工具来创建自己的数据源。依操作系统版本不同,"数据源(ODBC)"工具也可能存在于控制面板中“管理工具”项目下。

数据源(ODBC)工具双击之后就能看见已经被注册了的DSN列表。楼主看下有没有叫做“test.mdb”的数据源?应该没有吧,这个只是文件名而已。然后需要添加数据源,选择ACCESS数据库驱动程序引擎,然后选择自己的数据库文件(即test.mdb)。还可以设置用户名和密码等其他和数据源相关联的设置.

P.S.当然不通过数据源,而直接通过磁盘文件名连接数据库也可以。但几乎没人这样做的,什么理由,楼主有兴趣网上搜一下就知道了。
wawoo2007
2009-10-22 · TA获得超过626个赞
知道小有建树答主
回答量:465
采纳率:0%
帮助的人:637万
展开全部
按钮操作里面不需要重新调用
m_pConnection.CreateInstance
也不需要重新调用
m_pConnection->Open
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
弈语梦昕
2009-10-22 · TA获得超过112个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:84.9万
展开全部
CString strSql="insert into 定位信息 values('20','30','40')";

中间表名 改成 英文的 试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecba46aab
2009-10-22 · TA获得超过2303个赞
知道大有可为答主
回答量:2477
采纳率:100%
帮助的人:1979万
展开全部
数据库的表有问题不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式