vc连接access2003出错,头都大了runtime错误。。。跪求!!在线等

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc连接access2003出错,头都大了runtime错误。。。跪求!!在线等相关的知识,希望对你有一定的参考价值。

void CStudentDlg::OnButton1()

// TODO: Add your control notification handler code here
AfxOleInit();
pConn.CreateInstance(__uuidof(Connection));
pRst.CreateInstance(__uuidof(Recordset));
try

pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);

catch(_com_error e)

AfxMessageBox("数据库连接失败确认路径先");


try

pConn->Execute("select * from table1",NULL,adCmdText);

catch(_com_error e)

AfxMessageBox("执行查询出错!");


while(!pRst->adoEOF)

((CListBox*)GetDlgItem(IDC_LIST1))->AddString(
(_bstr_t)pRst->GetCollect("id"));
pRst->MoveNext();


pRst->Close();
pConn->Close();
pRst.Release();
pConn->Release();

数据库编程的思路都是一致的:打开数据库连接-》执行SQL语句-》获得查询结果-》关闭数据库连接,不同的数据库访问技术有不同的要求,比如用C API诘问mysql数据库的时候还得释放查询结果集。
ODBC访问数据库得配置数据源

现在用VC、MFC访问数据库常用的技术是ADO,很实用!

导入ADO库
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")
2、用导入的动态库的指针操作数据库.
打开数据库连接
_ConnectionPtr m_pConn; // 数据库连接指针
// 创建Conneciton对象
m_pConn.CreateInstance(_T("ADODB.Connection"));
用ConnectionPtr 的open方法m_pConn->Open(_bstr_t(m_sConn),
_T(""), _T(""), lOptions));
m_sConn为你连接数据库的信息,你应该按照你的要求打开数据库

然后你用打开的那个连接进行操作数据库。比如
_RecordsetPtr pRec = m_pConn->Execute(_bstr_t(pszSql), NULL, CmdText);
pszSql 就你要操作数据库的SQL语句。在这个SQL语句里你可以创建表、更新表等。

用ADO访问的时候要求初始他COM库和释放COM对象
// 初始化COM环境(库)
::CoInitialize(NULL);
//释放COM对象
::CoUninitialize();

ODBC访问数据库
配置ODBC数据源:打开控制面板下的“数据源”,弹出“ODBC数据源管理器”,选择DSN选项卡-》添加->你选择你的SQL Server选项,单击完成。如图然后你再按照向导提示添加。

代码中用ODBC访问数据库你得加上afxdb.h头文件,
用CDataBase 类连接数据库、CRecordSet类查询记录。
现在在VC访问数据库常用的是ADO访问,你可以找一下我前面的回答有ADO访问数据库的步骤。

CDataBase m_cODBCDb;
用CDataBase类的OpenEx()函数打开数据库连接。连接字符串你自己构造一下。
定义一个与上面数据库相关的查询对象
CRecordSet m_cODBCRec(&m_cODBCDb);
用这个查询对象的open方法就可以执行SQL语句与数据库交互了;
参考技术A 给你一个类:
//ADOConn.h
#import "C:\Program Files\Common Files\System\ado\msado15.dll"no_namespace \
rename("EOF","adoEOF")rename("BOF","adoBOF")
class ADOConn

public:
BOOL ExecuteSQL(_bstr_t bstrSQL);

ADOConn();
virtual ~ADOConn();

//添加一个指向Connection对象的指针
_ConnectionPtr m_pConnection;
//添加一个指向Recordset对象的指针
_RecordsetPtr m_pRecordset;
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
void ExitConnect();
void OnInitADOConn();
;

//ADOConn.cpp
#include "ADOConn.h"
DOConn::ADOConn()




ADOConn::~ADOConn()




void ADOConn::OnInitADOConn()

//初始化OLE/COM库环境
::CoInitialize(NULL);
try

//创建connection对象
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
_bstr_t strConnect="uid=;pwd=;DRIVER=Microsoft Access Driver (*.mdb);DBQ=shujuku.mdb;";
//SERVER和UID,PWD的设置根据实际情况来设置
m_pConnection->Open(strConnect,"","",adModeUnknown);

//捕捉异常
catch(_com_error e)

//显示错误信息
AfxMessageBox(e.Description());




void ADOConn::ExitConnect()

//关闭记录集和连接
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
//释放环境
::CoUninitialize();



_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)

try

if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

catch(_com_error e)

e.Description();

return m_pRecordset;


BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)

try

//是否已连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;

catch(_com_error e)

e.Description();
return false;

参考技术B 我觉得吧,应该是这里出问题了啊:
m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data
把上面的4.0 改成 5.0
m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.5.0;Data
试试看看!

MYSQL连接问题

就是出现这个问题··先前发过两个贴·请教了些高手·但是还是没有解决问题···希望以前遇到过类似问题并解决了的朋友帮我解决下···这里说不清楚的话加Q·371838539···整了一天了·头都大了··
哎、。还是什么问题都没解决啊··还有没有高人·····

ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)解决方法
如果出现"ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)", 说明你的MySQL服务还没有启动。
首先应该启动mysql服务,如果你的mysql是安装版,可通过在dos窗口中输入net start mysql命令,启动mysql。追问

我在服务里面找不到MYSQL诶

追答

如果你的mysql安装版,可以通过在dos窗口执行net start mysql就可以启动mysql服务了。你试下。

追问

能加Q教下嘛?我现在头都晕了···搞不懂啊

参考技术A 请确认Mysql服务是否启动.端口号是否是安装时设置的那个.追问

服务里面没有MYSQL····
能加Q教我下吗?

追答

删除MYSQL重新安装

追问

我试过了诶·几次了··也换过不同的版本··都还是同样的情况

追答

你服务里没有MYSQL就是没有安装成功.安装成功应该会有个mysql名字的服务.在服务里选中一条后连按m y 就可以定位到该服务

追问

我是按照那个一步一步安装的·。诶··那要怎么样才能安装成功呢·?头都整晕了

追答

你点击开始-所有程序-MySql-MySQL Command Line Client 进去后输入root的密码 看看是不是能登陆 如果能 Mysql就没问题 不能就是你安装的有问题

参考技术B 看一下MySQL的服务是不是关了,或者是不是端口问题?
看一下这个网址http://faq.comsenz.com/?action-viewnews-itemid-111,希望对你有帮助。
参考技术C 加我百度hi好友吧,我远程帮你调试下。 我已经加你Q了。

以上是关于vc连接access2003出错,头都大了runtime错误。。。跪求!!在线等的主要内容,如果未能解决你的问题,请参考以下文章

记mac下配置php+nginx环境(头都大了)

代码Bug太多?给新人Code Review头都大了?快来试试SpotBugs

MYSQL连接问题

为什么需要分布式数据库!

游戏运维平台

求助,求向access2003版本数据库中加入新纪录的程序代码(VC6.0,MFC,ADO)