VC连接数据库.docx

上传人:b****3 文档编号:10263954 上传时间:2023-05-24 格式:DOCX 页数:15 大小:18.17KB
下载 相关 举报
VC连接数据库.docx_第1页
第1页 / 共15页
VC连接数据库.docx_第2页
第2页 / 共15页
VC连接数据库.docx_第3页
第3页 / 共15页
VC连接数据库.docx_第4页
第4页 / 共15页
VC连接数据库.docx_第5页
第5页 / 共15页
VC连接数据库.docx_第6页
第6页 / 共15页
VC连接数据库.docx_第7页
第7页 / 共15页
VC连接数据库.docx_第8页
第8页 / 共15页
VC连接数据库.docx_第9页
第9页 / 共15页
VC连接数据库.docx_第10页
第10页 / 共15页
VC连接数据库.docx_第11页
第11页 / 共15页
VC连接数据库.docx_第12页
第12页 / 共15页
VC连接数据库.docx_第13页
第13页 / 共15页
VC连接数据库.docx_第14页
第14页 / 共15页
VC连接数据库.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VC连接数据库.docx

《VC连接数据库.docx》由会员分享,可在线阅读,更多相关《VC连接数据库.docx(15页珍藏版)》请在冰点文库上搜索。

VC连接数据库.docx

VC连接数据库

VC连接SQL2000数据库

对于初学VC的朋友来说,连接数据库其实是一件不容易的事情。

记得我当时为了与数据库连接上,找了好多资料,上网看了好多文章,都没有解决这个问题。

后来,有个网友帮我解决了,我再次表示感谢。

为了后来VC初学的朋友的方便,我现在将VC连接SQL2000数据库的方法写下来,就算你是初学,即使刚入门,也可以成功连接数据库的。

(注意:

由于文章过长,本文章未写完,如果想要整个的代码,可以留个邮箱,或发邮件到yinfulin888888@索要)

先做点准备工作吧。

1学VC连接数据库,要安装两个软件,VisualC++6.0和SQL2000。

怎么安装,我不说了。

2要连接数据库先要启动SQL2000的服务器,看下图吧

单击开始,就可以启动了。

3然后,还是上面,打开“企业管理器”,要建立数据库和表了。

打开根目录后,有个

(local)(WindowsNT)的,在上面单击右键,选择属性,再选择安全性,身份验证选择上面那个SQLServer和Windows,再确定,是。

等一下就好了。

4建立数据库,在“数据库”根目录上,单击右键,选择“新建数据库”,输入数据库名字

db_client(也可以用其他的名字,但是下面有些地方会用到),展开db_client,在“表”上右键单击,选择“新建表”,建立如下表:

完成之后,直接关闭,提示保存,选择“是”,然后填入表名字,tb_user,即可。

然后在表中填入数据。

右键单击刚建立的表tb_user,选择“打开表”,“返回所以行”,填入数据,(为了方便登录,第一行都输入1吧)。

这样表就建立好了。

5现在要开始正式编程了。

打开VC6.0.

选择“文件”,“新建”,“工程”,MFCAppWizard(exe),工程名字为:

Client,路径自己选择一下吧。

第一步,选择“对话框应用程序”,直接“完成”。

6现在要开始写程序了,

先新建一个类吧,“Insert”,“Newclass”,classicType选择:

GenericClassic,Name为:

CADO,

OK即可。

ADO.h文件的代码如下:

#if!

defined(AFX_ADO_H__9B5E5042_244A_4558_A0EA_DECC024DB191__INCLUDED_)

#defineAFX_ADO_H__9B5E5042_244A_4558_A0EA_DECC024DB191__INCLUDED_

#include"stdafx.h"

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

classADO

{

public:

_RecordsetPtrm_pRecordset;//定义记录集指针

_ConnectionPtrm_pConnection;//定义连接指针

public:

voidGetData(CStringstrSQL,CStringUserID);

CStringm_UserID;//用户ID

CStringm_UserPwd;//用户密码

CStringm_UserType;//用户类型

//boolTest(CStringSQL);

voidrstOpen(CStringTSQL);//打开记录集

voidExecuteSQL(CStringSQL);//执行SQL语句

boolMove(intnRecordNum);//移动记录集

CStringGetFieldValue(CStringField);//获得字段值

voidGetErrors(_com_erroreErrors);//获得错误信息

boolOpen(CStringsrecordset,UINTadCmd);//打开记录集

intGetRecordCount();//获得记录个数

boolMoveFirst();//最开始一条

boolMoveNext();//下一条

boolMoveLast();//最后一条

boolMovePrevious();//前一条

voidclose();//关闭连接和记录集

ADO();

virtual~ADO();

};

#endif//!

defined(AFX_ADO_H__9B5E5042_244A_4558_A0EA_DECC024DB191__INCLUDED_)

ADO.cpp文件代码为:

#include"stdafx.h"

#include"Client.h"

#include"ADO.h"

#ifdef_DEBUG

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#definenewDEBUG_NEW

#endif

//////////////////////////////////////////////////////////////////////

//Construction/Destruction

//////////////////////////////////////////////////////////////////////

ADO:

:

ADO()//构造ADO对象时候自动调用打开连接

{

:

:

CoInitialize(NULL);//初始化

try

{

m_pConnection.CreateInstance(_uuidof(Connection));//建立ADO连接的句柄

_bstr_tstrConnect="Provider=SQLOLEDB;datasource=127.0.0.1;Database=db_client;uid=sa;pwd=sa;";

//注意:

如果你建立数据库时候没有用户名和密码,上面一句该为下面的:

strConnect="Provider=SQLOLEDB;datasource=127.0.0.1;Database=db_client;uid=;pwd=;";

m_pConnection->Open(strConnect,"","",0);//打开连接

}

catch(_com_errore)

{

AfxMessageBox(e.Description());

}

}

ADO:

:

~ADO()

{

}

voidADO:

:

close()//关闭记录集和连接

{

m_pRecordset->Close();

m_pConnection->Close();

m_pRecordset=NULL;

m_pConnection=NULL;

:

:

CoUninitialize();

}

boolADO:

:

MovePrevious()//记录集前一条

{

try

{

m_pRecordset->MovePrevious();

}

catch(_com_errore)

{

AfxMessageBox(e.Description());

returnfalse;

}

returnTRUE;

}

boolADO:

:

MoveLast()//记录集最后一条

{

try

{

m_pRecordset->MoveLast();

}

catch(_com_errore)

{

AfxMessageBox(e.Description());

returnfalse;

}

returnTRUE;

}

boolADO:

:

MoveNext()//记录集下一条

{

try

{

m_pRecordset->MoveNext();

}

catch(_com_errore)

{

AfxMessageBox(e.Description());

returnfalse;

}

returnTRUE;

}

boolADO:

:

MoveFirst()//记录集开始一条

{

try

{

m_pRecordset->MoveFirst();

}

catch(_com_errore)

{

AfxMessageBox(e.Description());

returnfalse;

}

returnTRUE;

}

intADO:

:

GetRecordCount()//获得记录数目

{

intnCount;

try

{

m_pRecordset->MoveFirst();

}

catch(_com_errore)

{

return0;

}

if(m_pRecordset->adoEOF)

return0;

while(!

m_pRecordset->adoEOF)

{

m_pRecordset->MoveNext();

nCount++;

}

m_pRecordset->MoveFirst();

returnnCount;

}

boolADO:

:

Open(CStringsrecordset,UINTadCmd)//打开记录集

{

try

{

//用连接指针打开记录集,可以打开空记录集

m_pRecordset=m_pConnection->Execute((_bstr_t)srecordset,NULL,adCmd);

}

catch(_com_error&e)

{

this->GetErrors(e);

returnfalse;

}

returntrue;

}

voidADO:

:

GetErrors(_com_erroreErrors)//获得错误信息

{

ErrorsPtrpErrors=m_pConnection->GetErrors();

if(pErrors->GetCount()==0)

MessageBox(NULL,eErrors.ErrorMessage(),"错误",MB_OK|MB_ICONEXCLAMATION);

else

{

for(inti=0;iGetCount();i++)//多个错误

{

//获得ADO执行时出错的语言描述,并输出

_bstr_tdesc=pErrors->GetItem((long)i)->GetDescription();

MessageBox(NULL,desc,"错误",MB_OK|MB_ICONEXCLAMATION);

}

}

}

CStringADO:

:

GetFieldValue(CStringField)//获得字段值

{

_variant_tThevalue;

CStringtemp;

Thevalue=m_pRecordset->GetCollect((_bstr_t)Field);

if(Thevalue.vt==VT_EMPTY||Thevalue.vt==VT_NULL)

temp="";

else

{

temp=(char*)(_bstr_t)Thevalue;

temp.TrimLeft();

temp.TrimRight();

}

returntemp;

}

boolADO:

:

Move(intnRecordNum)//移动记录集指针到指定位置

{

try

{

if(!

m_pRecordset->adoBOF)

{

m_pRecordset->MoveFirst();

}

m_pRecordset->Move(nRecordNum);

}

catch(_com_errore)

{

AfxMessageBox(e.Description());

returnfalse;

}

returnTRUE;

}

voidADO:

:

ExecuteSQL(CStringSQL)//执行

{

try

{

m_pConnection->Execute((_bstr_t)SQL,NULL,adCmdText);//用指向连接的指针指向SQL语句

}

catch(_com_errore)

{

AfxMessageBox(e.Description());

}

}

voidADO:

:

rstOpen(CStringTSQL)//打开记录集

{

try

{

//用记录指针打开记录集

_bstr_tstrSQL=TSQL.AllocSysString();

m_pRecordset.CreateInstance(_uuidof(Recordset));

m_pRecordset->Open(strSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);

}

catch(_com_errore)

{

m_pRecordset=m_pConnection->Execute(_bstr_t(TSQL),NULL,adCmdText);

}

}

voidADO:

:

GetData(CStringstrSQL,CStringUserID)

{

m_pRecordset.CreateInstance(_uuidof(Recordset));//创建记录集对象

m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(130),m_pConnection.GetInterfacePtr()

adOpenDynamic,adLockOptimistic,adCmdText);//取得表中的记录

//返回各列值

if(m_pRecordset->adoEOF)

{

return;

}

else

{

m_UserID=UserID;

m_UserPwd=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("user_mm");

m_UserType=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("user_type");

}

}

在StdAfx.h里面加入下面的代码:

#import"c:

\ProgramFiles\CommonFiles\System\ado\msado15.dll"no_namespacerename("EOF","adoEOF")rename("BOF","adoBOF")

7下面新建一个对话框,该ID为:

IDD_MAINDLG

为该对话框新建一个类,直接在对话框上双击,在弹出的对话框单击OK输入Name为:

CMainDlg

8把第一个对话框ID为:

IDD_DIALOG1该为:

IDD_LOGINDLG

并设计该对话框为下图:

编辑框控件ID为:

IDC_USERID,IDC_USERPWD

按钮控件ID为:

IDC_OK,IDC_EXIT

9现在为按钮控件添加消息响应:

菜单,“View”,“ClassWiarzd”,“MessageMap”,“Client”,

“CClientDlg”,IDC_OK,BN_CLICED,AddFunction,OK,OK,

用同样的方法添加IDC_EXIT消息处理。

在CClientDlg的头文件中的某个Public下添加:

intm_count;

ADOadoConn;

在OnExit()的代码如下:

voidCClientDlg:

:

OnExit()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

intresult;

if(m_count>3)

{

CDialog:

:

OnCancel();

}

else

{

result=MessageBox("是否真的要退出","提示",MB_YESNO);

if(IDYES==result)//exit

{

CDialog:

:

OnCancel();

}

elseif(IDNO==result)//no

{

m_UserID="";

m_UserPwd="";

UpdateData(FALSE);

GetDlgItem(IDC_USERID)->SetFocus();

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2