VC中用ADO和DataGrid控件显示和更新数据库中的数据

来源:互联网 发布:matlab 定义三维数组 编辑:程序博客网 时间:2024/05/16 02:07

 

VC中用ADODataGrid控件显示和更新数据库中数据。

VC6.0为例

1、            新建一对话框

在资源视图中新建一个对话框,将对话框调整到适当大小,双击对话框创建对话框类。

2、            往对话框上添加DataGrid控件

VC6中点击 Project->add toproject->components and controls。在弹出的对话框中双击Registered ActiveX Controls 在弹出的控件列表中选择Microsoft DataGrid Control 6.0SP6)(OLEDB),点击insert,接下来的每一部都点确认按钮(ok按钮)。我们发现在工具箱中多了一个DataGrid控件的图标。

拖动该图标到对话框中,并且调整大小,设置属性为AllowAddNewAllowDeleteAllowUpdateColumnHeadersEnabled

DataCrid上右击用ClassWizard给对话框添加一个DataGrid变量m_dataGrid

3、            添加代码

在对话框头文件中添加如下代码#import"C://program files//common files//system//ado//msado15.dll"no_namespace rename ("EOF", "adoEOF")

在对话框头文件的对话框类中添加如下代码

_ConnectionPtr  pConnection;//数据库连接指针

_RecordsetPtr m_pRecordSet;//数据集指针

 

重载对话框OnInitDialog()函数,在其中添加如下代码

CoInitialize(NULL);                                                               //初始化Com组件pConnection.CreateInstance(__uuidof(Connection));                 //Connection用于与数据库服务器的链接

       CStringconStr;                                                                            //数据库连接字符串

       conStr.Format(_T("Driver=SQLSERVER;Database=%s;Server=%s;UID=%s;PWD=%s;"),"test","(local)","sa","sa");//注:此为ADO连接MS SQL数据库的一种方式,如果不是MS SQL数据库则连接方式不同

       /******************连接数据库********************/

       try

       {

              pConnection->ConnectionTimeout= 5;                                    //设置连接时间

              pConnection->Open(_bstr_t(conStr),"","",adModeUnknown);     //连接SQL SERVER

       }

       catch(_com_errore)                                                                     //捕捉异常

       {

              //AfxMessageBox(e.ErrorMessage());

              return-5;

       }

//创建数据集

 

 m_pRecordSet.CreateInstance("ADODB.Recordset"); 

m_pRecordSet->CursorLocation= adUseClient;

CString cmdStr;

cmdStr="select pithology as 岩性,patno as 对应花纹 from Pithology_Patno";

try

{

m_pRecordSet->Open(_variant_t(cmdStr),_variant_t((IDispatch *)pConnection,true),adOpenKeyset, 

   adLockOptimistic, adCmdUnknown);

}

catch (CException e)

{

CString emsg;

e.GetErrorMessage((LPTSTR)&emsg,1);

AfxMessageBox(emsg);

return false;

}

m_dataGrid.SetRefDataSource(NULL); 

m_dataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordSet); 

m_dataGrid.Refresh(); 

 CoUninitialize();            

 

现在DataGrid控件便具有添加、删除、修改数据的功能了。

 

原创粉丝点击