VC++数据库通用模块开发:数据显示
2008-11-24 19:38:30 来源:WEB开发网(5) 在对话框类的头文件Data_Disp2Dlg.h中添加下面语句。
#import "c:program filescommon filessystemadomsado15.dll" no_namespace
rename("EOF","adoEOF")
在对话框类中添加数据库连接对象和数据集对象,如下所示。
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
在对话框类中引用DataGrid控件的子类头文件,如下所示。
#include "Columns.h"
#include "Column.h"
在对话框类的初始化函数中连接数据库与数据集,将指定数据集绑定到m_dbTest,并设置列宽和列头,将数据显示出来。
BOOL CData_Disp2Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
//初始化数据库连接
m_pConnection.CreateInstance("ADODB.Connection");
//连接数据库
try
{
//超时检查
m_pConnection->ConnectionTimeout = 8;
m_pConnection->PutCursorLocation(adUseClient);
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=DataDisp2.mdb", "", "", adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
return FALSE;
}
try
{
//初始化记录集对象
m_pRecordset.CreateInstance("ADODB.Recordset");
//打开记录集
m_pRecordset->Open("SELECT * FROM BALANCE",_variant_t((IDispatch
*)m_pConnection,true), adOpenDynamic, adLockPessimistic, adCmdText);
}
catch(_com_error e)//捕捉异常
{
CString temp;
temp.Format("aaa连接数据库错误信息:%s",e.ErrorMessage());
AfxMessageBox(temp);
return 0;
}
//绑定数据源
m_dbTest.SetRefDataSource(NULL);
m_dbTest.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_dbTest.SetColumnHeaders(2) ;
//设置列宽与列头
_variant_t vIndex;
vIndex = long(0);
m_dbTest.GetColumns().GetItem(vIndex).SetWidth(50);
m_dbTest.GetColumns().GetItem(vIndex).SetCaption("姓名");
vIndex = long(1);
m_dbTest.GetColumns().GetItem(vIndex).SetWidth(50);
m_dbTest.GetColumns().GetItem(vIndex).SetCaption("收入");
vIndex = long(2);
m_dbTest.GetColumns().GetItem(vIndex).SetWidth(50);
m_dbTest.GetColumns().GetItem(vIndex).SetCaption("支出");
vIndex = long(3);
m_dbTest.GetColumns().GetItem(vIndex).SetWidth(30);
m_dbTest.GetColumns().GetItem(vIndex).SetCaption("余额");
vIndex = long(4);
m_dbTest.GetColumns().GetItem(vIndex).SetWidth(30);
m_dbTest.GetColumns().GetItem(vIndex).SetCaption("时间");
//显示更新
m_dbTest.Refresh();
return TRUE;
}
至此就实现用表格显示数据库中的数据,但是这个程序的功能很有限,只能显示数据,不能对表格中的数据进行编辑。接下来介绍几种常用的表格编辑方法。
更多精彩
赞助商链接