vs2008和SQL Server使用ADO连接方法
https://blog.****.net/a8082649/article/details/21108345
注意VC中地址要以\\表示!!!!!获取的字符串要修改
学了几天ADO方法,今天也写一写教程~
时间2012年10月20日
环境:
操作系统:win7- 64bit
编译器:VS2008
数据库:SQL Server 2000
说明:
SQl Server2000和win7 64bit 的有点不兼容,网上有很多sql server2000的下载,但安装时有些安装失败,提示无法安装数据库引擎,只能安装客户端(那就不要安装了),笔者安装的SQL Server2000的下载地址为:
http://pan.baidu.com/share/link?shareid=88166&uk=1343091770
第一步:
安装数据库。
Win7 64位的安装方法如下:
安装方法是首先将上述连接地址的程序打开,选着解压目的文件夹,如图1.1
图1.1
解压完成后,进入目录:F:\SQLEVAL\x86\setup,找到setupsql.exe,右键选择属性,兼容性中选择“以兼模式运行这个程序”和“以管理员身份运行此程序”,然后双击安装就行,安装过程中进行到图1.2时,设置如图1.2
图1.2
“下一步”进入图1.3
在图1.3中设置的密码要记住了,因为vs2008连接时要用,这里的密码就设置为“sa”了,然后继续。。。。。。。。
将上面提供的SQL Server2000安装后,选择“开始”->“Mis....SQL Server”->“服务管理器”启动数据库,然后选择“企业管理器”,连接数据库,创建一个新的数据库Person,展开Person数据库,然后选择“查询分析器”,注意图1.4红色圈圈中,选择Person(这样才能操作Person数据库,不要想着用界面见表、添加数据了,SQL Server2000在win7 64bit下好像不能实现图形化操作,所以还是用查询语句,也就是SQL语句来实现数据操作吧,也练习一下sql语句)
图1.4
这里为方便后面编程验证,在Person数据库中创建一个LoginUser表:create table LoginUser(
Id int,
Name char(20),
Password char(20)
);
到这里数据库就准备好了
第二步,VS2008编程ADO连接SQL Server
首先新建一个MFC工程,笔者选择单文档的,然后就是向工程内添加新的类,用于连接数据库,类名自己定义,笔者定义为CADOEx。
导入ADO库:在stdafx.h文件头添加
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
添加好后,添加三个变量:
// 记录集对象
_RecordsetPtr m_pRs;
// 命令对象
_CommandPtr m_PCmd;
_ConnectionPtr m_pConnection;
继续添加两个函数:
// 连接数据库
BOOL ConnectDB(void);
// 执行更新操作
BOOL ExecuteNotSelSQL(CString strNotSelSQL);
然后创建连接对象实例和创建命令对象实例
在CADOEx类的构造函数CADOEx()函数中添加如下代码:(可以照搬)
CADOEx::CADOEx(void)
{
//创建连接对象实例
HRESULT hr = m_pConnection.CreateInstance(_uuidof(Connection));
if(!SUCCEEDED(hr))
{
AfxMessageBox("创建连接对象实例失败!");
}
//创建命令对象实例
hr = m_PCmd.CreateInstance(__uuidof(Command));
if(!SUCCEEDED(hr)){
AfxMessageBox("创建命令对象失败");
}
}
创建连接对象实例后:连接数据库,调用实例 m_pConnection的函数Open()
Open函数的参数写法有很多方法下面给的方法是:不通过DSN对SQL SERVER数据库进行连接
“其中Server是SQL服务器的名称(可以是127.0.0.1),DATABASE是库的名称(这里用刚才建的数据库Person)”
在ConnectDB(void)函数中添加
BOOL CADOEx::ConnectDB(void)
{
/*
HRESULT hr = m_pConnection->Open("Provider = SQLOLEDB.1; Data Source =HEHE-PC; Database = Person;","sa","sa",adModeUnknown);
*/
HRESULT hr = m_pConnection->Open("driver={SQL Server};Server=HEHE-PC;DATABASE=Person;UID=sa;PWD=sa","","",adModeUnknown);
if (!SUCCEEDED(hr))
{
AfxMessageBox("连接到数据库失败!");
return FALSE;
}
return TRUE;
}
在执行更新操作函数ExecuteNotSelSQL(CString strNotSelSQL)中添加如下代码,实现对数据库的更新:
BOOL CADOEx::ExecuteNotSelSQL(CString strNotSelSQL)
{
try
{
_variant_t vResult;
vResult.vt = VT_ERROR;
vResult.scode = DISP_E_PARAMNOTFOUND;
//设置关联的Connection对象
m_PCmd->ActiveConnection = m_pConnection;
//SQL命令
m_PCmd->CommandText = (_bstr_t)strNotSelSQL;
//执行命令
m_pRs = m_PCmd->Execute(&vResult,&vResult,adCmdText);
}
catch (_com_error& e)
{
//显示错误信息
AfxMessageBox(e.ErrorMessage());
return FALSE;
}
return TRUE;
}
现在开始编程实现VS2008连接SQL Server,在工程的***View类中的OnInitialUpdate(void)函数中添加以下代码:
void CAdo01View::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CADOEx ado;
if(ado.ConnectDB()){
AfxMessageBox("数据库连接成功");
//在Person数据库loginUser表中插入一条记录,loginUser表的定义见上文
CString strSQL = "insert into loginUser values('12','来自VC','12')";
ado.ExecuteNotSelSQL(strSQL);
AfxMessageBox("插入了一条记录进loginUser表中");
}
else{
AfxMessageBox("数据库连接失败!");
}
// TODO: 调用GetListCtrl() 直接访问ListView 的列表控件,
// 从而可以用项填充ListView。
}
然后编译项目,运行程序,就可以了
完成。