297上位机VC MFC使用ADO设置记录集索引
使用ADO设置记录集索引
功能展示
ADO数据库程序中,给一个数据库管理系统设置记录的索引,可以大大回忆检索数据的速度,进而提高数据库管理的工作效率,我们当前例程实现设置数据库记录集索引的功能,例程运行会初始化连接根目录的数据库文件,点击<查看表字段名>会显示出表new中全部字段名,点击<选中字段设为索引>可以设置字段为索引,要注意的是相同字段仅能设置的索引名不能重复,也就是例程的设置按钮不能点击两次;
要点提示
设置数据库记录集的索引,得在所有域值中得到一个独一无二的值,然后才能设置为索引,
将字段名设置为索引的语句为CREATE UNIQUE INDEX IndexName ON TableName(FieldName)
实现功能
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.主对话框中添加变量public:
_ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset;并初始化
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
5.按照例程界面,添加一列表框IDC_LIST1,两按钮按钮<查看表字段名><选中字段设为索引>并关联函数
void CGkbc8Dlg::OnLook()
{
CListBox *pListBox = (CListBox *)GetDlgItem(IDC_LIST1);
pListBox->ResetContent();
CString strColName;
BSTR bstrColName;
long ColCount,i;
HRESULT hr;
Fields * fields = NULL;
m_pRecordset->Open("SELECT * FROM new", m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
hr = m_pRecordset->get_Fields (&fields);
if(SUCCEEDED(hr))
fields->get_Count(&ColCount);//得到记录集的字段集合中的字段的总个数
LPCTSTR nameField;
for(i=0;i<ColCount;i++)
{
fields->Item->get_Name(&bstrColName); //得到记录集中的字段名
strColName=bstrColName;
nameField = strColName;
pListBox->AddString(nameField);
}
//释放指针
if(SUCCEEDED(hr))
fields->Release();
m_pRecordset->Close();
}
void CGkbc8Dlg::OnSet()
{
CListBox *pListBox = (CListBox *)GetDlgItem(IDC_LIST1);
int index=pListBox->GetCurSel();
if(index==LB_ERR)//判断是否选择了项目
{
MessageBox("没有选择索引项!");
return;
}
CString str;
pListBox->GetText(index,str);//取得选择项目
_variant_t RecordsAffected;
//设置索引
if(str=="ID")
m_pConnection->Execute("CREATE UNIQUE INDEX id ON new(ID)",&RecordsAffected,adCmdText);
if(str=="Name")
m_pConnection->Execute("CREATE UNIQUE INDEX name ON new(Name)",&RecordsAffected,adCmdText);
AfxMessageBox("设置索引成功!");
}
我们来演示功能实现过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|