步骤及代码如下:
1、首先在Stdafx.h头文件中引入ADO库,代码如下:
//引入ADO库
#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile")
//rename("EOF","EndOfFile")表示将"EOF"重新定义为"EndOfFile"
2、在需要连接数据库的.CPP文件中加入数据库操作代码:
::CoInitialize(NULL); . //初始化COM库
_ConnectionPtr m_pstartconn; //连接对象指针
m_pstartconn.CreateInstance(__uuidof(Connection)); //初始化对象
_RecordsetPtr pRecordsetstart; //数据集对象指针
pRecordsetstart.CreateInstance(__uuidof(Recordset)); //初始化数据集指针
//连接数据库的字符串
CString strConnect= "Provider=SQLOLEDB.1;Password=123;Persist Security Info=False;User ID=123;Initial Catalog=datatest;Data Source=10.1.8.221";
注释:Provider字段指 打开数据库用哪种方式连接,Password指数据库的认证密码,Persist Security Info指是否保存安全信息,User ID指数据库的认证用户名,Initial Catalog指数据库的名称或者目录,Data Source指远程的数据库(服务器)IP地址
下面是有两种打开数据库方式,一个是以m_pstartconn打开数据库,另一个以pRecordsetstart连接数据库,实际操作可以任选其一
1>以m_pstartconn打开数据库:
try
{
if (m_pConnection->State)
{
m_pConnection->Close();
}
// 设置超时时间为3秒钟
m_pConnection->PutConnectionTimeout(3);
m_pConnection->Open(_bstr_t(strConnect),"","",adModeUnknown);
}
catch(_com_error e)
{
CString strmessage;
strmessage.FormatMessage("数据库连接失败!",e.Description());
AfxMessageBox(strmessage);
}
2>下面是以pRecordsetstart打开数据库并连接f_test_tb表及异常处理:
try
{
if (m_pstartconn->State)
{
m_pstartconn->Close();
}
m_pstartconn->PutConnectionTimeout(5); // 设置超时时间为5秒钟
pRecordsetstart->Open("select * from f_test_tb", _bstr_t(strConnect),
adOpenDynamic, adLockOptimistic, adCmdUnknown); //打开数据库中的f_test_tb表,得到数据集,并赋给pRecordsetstart
}
catch(_com_error e)
{
CString strmessage;
strmessage.FormatMessage("数据库连接失败!",e.Description());
AfxMessageBox(strmessage);
}
3、上面连接数据库的步骤已经完成,下面是对数据库表的操作:
//插入数据
CString strSQL = "insert into f_data(order,pn,testname,testvalue) values('312','GS','wcd,'30')";//插入字符串
pRecordsetftest->AddNew();
pRecordsetftest->PutCollect("order",12); //插入列数据,order指表中的字段,12指插入此列的数据
pRecordsetftest->PutCollect("pn",34); //插入列数据,pn指表中的字段,34指插入此列的数据
pRecordsetftest->Update(); //更新数据库表
//获得数据库表的数据:
CString strpn=((_variant_t)pRecordsetstart->GetCollect("pn")).bstrVal; //pn 指表中的字段,获取到的数据赋给变量strpn。
// 删除数据库的数据:
CString strpn=((_variant_t)pRecordsetstart->GetCollect("pn")).bstrVal; //pn 指表中的字段,获取到的数据赋给变量strpn,再删除
pRecordsetstart->Delete(adAffectCurrent);
pRecordsetstart.->Update();