293上位机VC MFC使用ADO添加删除单行
使用ADO添加删除单行
功能展示
ADO数据库程序中,记录集都是以众多表格形式存储,有时我们想删除表格的指定行,或是往表格中添加几行数据,我们就得编写代码实现这一功能,当前例程就实现了这一功能,程序运行时会打开根目录的数据库,准备三个编辑框数据后点击<添加记录集数据>可以往已打开的数据表new添加一行,点击<删除>则会删除指定ID的行数据;
要点提示
1.行的添加我们当前例程是通过执行SQL语句来实现,当然还有其他 方法,如利用记录集对象的成员函数。具体方法步骤是调用AddNew()新增一空记录,调用PutCollect(字段名,值)输入每个字段的值;
调用Update()更新数据库数据;
2.在对记录集指针进行删除操作时,数据库数据被删除后,此记录为空记录,所以记住移动记录集数据指针到新的有效记录处;删除操作可以语句DELETE from tablename where condition
另外在对记录集指针定位后,记得将指针复位,一般情况生效置首,不然会引起不可预知的结果;
实现功能
1.新建基于对话框的应用程序
2.在App类的InitInstance()函数中添加代码AfxOleInit();//初始化COM,创建ADO连接等操作
3.在stdafx.h中加入ADO支持库
#import “c:\program files\common files\system\ado\msado15.dll” no_namespace rename (“EOF”, “adoEOF”) 及#include "icrsint.h"//IADORecordBinding 头文件
4.主对话框中添加变量_ConnectionPtr m_pConnection;并初始化
HRESULT hr;
try
{
hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("rovider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb",
"","",adModeUnknown);
///连接数据库
///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为rovider=Microsoft.Jet.OLEDB.3.51;
}
}
// }
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
5.在主对话框添加三编辑框IDC_EDIT1,IDC_EDIT2,IDC_EDIT3,再添加<添加记录集数据><遍删除指定ID数据>按钮,响应按钮的点击函数
void CGkbc8Dlg::OnAddrecord()
{
int iid=GetDlgItemInt(IDC_EDIT1);
CString sUser;
GetDlgItemText(IDC_EDIT2,sUser);
int aage=GetDlgItemInt(IDC_EDIT3);
_variant_t RecordsAffected;
CString strSQL;
strSQL.Format("INSERT INTO new(id,username,old) VALUES(%d,'%s',%d)",iid,sUser,aage);
m_pConnection->Execute((_bstr_t)strSQL,&RecordsAffected,adCmdText);
MessageBox("已向数据库新增信息。");
}
void CGkbc8Dlg::OnEditrecord()
{
try
{
int id=GetDlgItemInt(IDC_EDIT1);
CString str;
str.Format("DELETE from new where ID=%d",id);
_variant_t RecordsAffected;
m_pConnection->Execute((_bstr_t)str,&RecordsAffected,adCmdText);
AfxMessageBox("删除成功!");
}
catch(_com_error*e)
{
AfxMessageBox(e->ErrorMessage());
}
}
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|