南昌大学数据库实验报告8文档格式.docx

上传人:b****5 文档编号:19447700 上传时间:2023-01-06 格式:DOCX 页数:16 大小:92.18KB
下载 相关 举报
南昌大学数据库实验报告8文档格式.docx_第1页
第1页 / 共16页
南昌大学数据库实验报告8文档格式.docx_第2页
第2页 / 共16页
南昌大学数据库实验报告8文档格式.docx_第3页
第3页 / 共16页
南昌大学数据库实验报告8文档格式.docx_第4页
第4页 / 共16页
南昌大学数据库实验报告8文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

南昌大学数据库实验报告8文档格式.docx

《南昌大学数据库实验报告8文档格式.docx》由会员分享,可在线阅读,更多相关《南昌大学数据库实验报告8文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

南昌大学数据库实验报告8文档格式.docx

BOOLExecuteSQL(_bstr_tbstrSQL);

voidExitConnect();

};

建立到数据源的连接

voidADOConn:

:

OnInitADOConn()//ADOConn.cpp

{:

CoInitialize(NULL);

//初始化OLE/COM库环境

try

{//创建Connection对象

m_pConnection.CreateInstance("

ADODB.Connection"

);

//设置连接字符串,必须是BSTR型或者_bstr_t类型

_bstr_tstrConnect="

Provider=SQLOLEDB;

Server=a5;

Database=HrMan;

uid=sa;

pwd=;

"

;

m_pConnection->

Open(strConnect,"

adModeUnknown);

}//捕捉异常

catch(_com_errore)

{//显示错误信息

AfxMessageBox(e.Description());

}

}

取得表中的记录到记录集

_RecordsetPtr&

ADOConn:

GetRecordSet(_bstr_tbstrSQL)

{try

{//连接数据库,如果Connection对象为空,则重新连接数据库

if(m_pConnection==NULL)

OnInitADOConn();

//创建记录集对象

m_pRecordset.CreateInstance(__uuidof(Recordset));

//取得表中的记录

m_pRecordset->

Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

}//返回记录集

returnm_pRecordset;

}

执行SQL语句

{//_variant_tRecordsAffected;

try{//是否已经连接数据库

if(m_pConnection==NULL)

//Connection对象的Execute方法:

(_bstr_tCommandText,

//VARIANT*RecordsAffected,longOptions)

//其中CommandText是命令字串,通常是SQL命令。

//参数RecordsAffected是操作完成后所影响的行数,

//参数Options表示CommandText的类型:

adCmdText-文本命令;

adCmdTable-表名

//adCmdProc-存储过程;

adCmdUnknown-未知

Execute(bstrSQL,NULL,adCmdText);

returntrue;

{AfxMessageBox(e.Description());

returnfalse;

}}

关闭连接

ExitConnect()

{

//关闭记录集和连接

if(m_pRecordset!

=NULL)

Close();

m_pConnection->

//释放环境

:

CoUninitialize();

4.为表创建类

classCEmployees//Employees.h

{private:

intEmp_id;

CStringEmp_name;

CStringSex;

CStringTitle;

floatWage;

intDep_id;

CEmployees();

virtual~CEmployees();

//设置和读取成员变量值

intGetEmp_id();

voidSetEmp_id(intvEmpId);

CStringGetEmp_name();

voidSetEmp_name(CStringvEmpName);

CStringGetSex();

voidSetSex(CStringvSex);

CStringGetTitle();

voidSetTitle(CStringvTitle);

floatGetWage();

voidSetWage(floatvWage);

intGetDep_id();

voidSetDep_id(intvDepId);

//数据库操作

voidsql_insert();

voidsql_update(CStringcEmpId);

voidsql_delete(CStringcEmpId);

//根据员工编号读取所有字段值

voidGetData(CStringcEmpId);

表类成员函数的实现

CEmployees:

CEmployees()

Emp_id=0;

Emp_name="

Sex="

Title="

Wage=0;

Dep_id=0;

intCEmployees:

GetEmp_id()

returnEmp_id;

voidCEmployees:

SetEmp_id(intvEmpId)

Emp_id=vEmpId;

CStringCEmployees:

GetEmp_name()

{returnEmp_name;

SetEmp_name(CStringvEmpName)

{Emp_name=vEmpName;

GetSex()

{returnSex;

SetSex(CStringvSex)

Sex=vSex;

GetTitle()

returnTitle;

SetTitle(CStringvTitle)

Title=vTitle;

floatCEmployees:

GetWage()

returnWage;

SetWage(floatvWage)

Wage=vWage;

GetDep_id()

returnDep_id;

SetDep_id(intvDepId)

Dep_id=vDepId;

5.表类成员插入函数

sql_insert()

{//连接数据库

ADOConnm_AdoConn;

m_AdoConn.OnInitADOConn();

//设置INSERT语句

CStringstrWage;

strWage.Format("

%f"

Wage);

_bstr_tvSQL;

vSQL="

INSERTINTOEmployees(Emp_name,Sex,Title,Wage,Dep_id)VALUES('

+Emp_name+"

'

'

+Sex+"

+Title+"

+strWage+"

1)"

//执行INSERT语句

m_AdoConn.ExecuteSQL(vSQL);

//断开与数据库的连接

m_AdoConn.ExitConnect();

sql_update(CStringcEmpId)

{ADOConnm_AdoConn;

//连接数据库

//设置UPDATE语句

UPDATEEmployeesSETEmp_name='

+Emp_name+"

Sex='

+Sex+"

Title='

Wage="

+strWage+"

WHEREEmp_id="

+cEmpId;

//执行UPDATE语句

表类成员删除函数

sql_delete(CStringcEmpId)

//连接数据库

//设置DELETE语句

DELETEFROMEmployeesWHEREEmp_id="

//执行DELETE语句

读取员工信息

GetData(CStringcEmpId)

//设置SELECT语句

SELECT*FROMEmployeesWHEREEmp_id="

//执行SELETE语句

m_pRecordset=m_AdoConn.GetRecordSet(vSQL);

if(m_pRecordset->

adoEOF==1)//返回各列的值

else

{Emp_id=atoi(cEmpId);

Emp_name=(LPCTSTR)(_bstr_t)m_pRecordset->

GetCollect("

Emp_Name"

Sex=(LPCTSTR)(_bstr_t)m_pRecordset->

Sex"

Title=(LPCTSTR)(_bstr_t)m_pRecordset->

Title"

Wage=atof((LPCTSTR)(_bstr_t)m_pRecordset->

Wage"

));

Dep_id=atoi((LPCTSTR)(_bstr_t)m_pRecordset->

Dep_id"

}//断开与数据库的连接

添加:

IDC_ADD_BUTTON

修改:

IDC_MODI_BUTTON

删除:

IDC_DEL_BUTTON

关闭:

IDC_CLOSE_BUTTON

IDC_ADODC1

COMMANDTYPE1-TEXTCOMMANDTYPE

RecordSourceSELECT*FROMEmployees

IDC_DATAGRID1

CAPTION:

员工信息

DataSource:

IDC_ADODC1

6.添加成员变量

添加成员函数

voidCAdoDlg:

RefreshData()

{//设置ADOData控件的数据源

m_adodc.SetRecordSource("

SELECTEmp_id,Emp_nameAS员工姓名,SexAS性别,TitleAS职务,WageAS工资FROMEmployees"

m_adodc.Refresh();

//设置列宽度

_variant_tvIndex;

vIndex=long(0);

m_datagrid.GetColumns().GetItem(vIndex).SetWidth(0);

vIndex=long

(1);

m_datagrid.GetColumns().GetItem(vIndex).SetWidth(100);

vIndex=long

(2);

m_datagrid.GetColumns().GetItem(vIndex).SetWidth(80);

vIndex=long(3);

m_datagrid.GetColumns().GetItem(vIndex).SetWidth(100);

vIndex=long(4);

m_datagrid.GetColumns().GetItem(vIndex).SetWidth(90);

在AdoDlg.cpp中的成员函数OnInitDialog()中添加代码:

RefreshData();

并在其中包括

#include"

Columns.h"

Column.h"

COMDEF.H"

EditDlg.h"

_recordset.h"

datagrid.h"

Employees.h"

在datagrid.cpp中添加成员函数

CStringCDataGrid:

GetItem(intColNum)

{CColumnscols=GetColumns();

VARIANTv_ColNum,v_Value;

//设置列编号

v_ColNum.vt=VT_I2;

v_ColNum.iVal=ColNum;

//根据列编号返回CColumn对象

CColumncol=cols.GetItem(v_ColNum);

//读取列的

v_Value=col.GetValue();

returnv_Value.bstrVal;

并添加#include"

并在datagrid.h中声明

CStringGetItem(intColNum);

6.添加对话框资源

IDD_DIALOG1编辑员工信息。

为这个对话框创建新类CEditDlg。

为其添加成员变量:

CStringcEmpId;

//员工号添加时为空

CStringstrSex;

//员工性别

设置控件属性和连接成员变量

为CEditDlg成员变量初始化

CEditDlg:

CEditDlg(CWnd*pParent/*=NULL*/)

CDialog(CEditDlg:

IDD,pParent)

{//{{AFX_DATA_INIT(CEditDlg)

m_EmpName=_T("

m_Title=_T("

m_Wage=0.0f;

//}}AFX_DATA_INIT

voidCEditDlg:

DoDataExchange(CDataExchange*pDX)

{CDialog:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CEditDlg)

DDX_Control(pDX,IDC_SEX_COMBO,m_Sex);

DDX_Text(pDX,IDC_EMPNAME_EDIT,m_EmpName);

DDX_Text(pDX,IDC_TITLE_EDIT,m_Title);

DDX_Text(pDX,IDC_WAGE_EDIT,m_Wage);

//}}AFX_DATA_MAP

OnOK()

{CEmployeesemp;

//TODO:

Addextravalidationhere

UpdateData(true);

if(m_EmpName=="

)//检查数据有效性

{MessageBox("

请输入员工姓名"

return;

}//对CEmployees对象赋值

m_Sex.GetLBText(m_Sex.GetCurSel(),strSex);

emp.SetEmp_name(m_EmpName);

emp.SetSex(strSex);

emp.SetTitle(m_Title);

emp.SetWage(m_Wage);

emp.SetDep_id

(1);

//根据成员变量cEmpId的值,决定是插入数据,还是修改数据

if(cEmpId=="

)//插入数据emp.sql_insert();

elseemp.sql_update(cEmpId);

CDialog:

OnOK();

OnCancel()

OnCancel();

Addextracleanuphere

BOOLCEditDlg:

OnInitDialog()

OnInitDialog();

if(strSex=="

男"

)//TODO:

Addextrainitializationhere

m_Sex.SetCurSel(0);

m_Sex.SetCurSel

(1);

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

在EditDlg.cpp中添加

#include"

Employees.h“

在Employees.cpp中添加

ADOConn.h

在AdoDlg.cpp中添加成员函数

OnAddButton()

{//TODO:

Addyourcontrolnotificationhandlercodehere

CEditDlgdlg;

dlg.cEmpId="

dlg.strSex="

if(dlg.DoModal()==IDOK)

RefreshData();

OnCloseButton()

OnCancel();

}voidCAdoDlg:

OnModiButton()

if(m_adodc.GetRecordset().GetEof()==1)

没有数据"

return;

dlg.cEmpId=m_datagrid.GetItem(0);

dlg.m_EmpName=m_datagrid.GetItem

(1);

dlg.strSex=m_datagrid.GetItem

(2);

dlg.m_Title=m_datagrid.GetItem(3);

dlg.m_Wage=atof(m_datagrid.GetItem(4));

OnDelButton()

请选择要删除的数据"

if(MessageBox("

是否删除当前记录?

请确认"

MB_YESNO)==IDYES)

{CEmployeesemp;

emp.sql_delete(m_data

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1