ADO连接SQL.docx
《ADO连接SQL.docx》由会员分享,可在线阅读,更多相关《ADO连接SQL.docx(13页珍藏版)》请在冰豆网上搜索。
ADO连接SQL
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->M