《数据库技术及应用》实验报告文档格式.docx

上传人:b****6 文档编号:18234236 上传时间:2022-12-14 格式:DOCX 页数:41 大小:1.16MB
下载 相关 举报
《数据库技术及应用》实验报告文档格式.docx_第1页
第1页 / 共41页
《数据库技术及应用》实验报告文档格式.docx_第2页
第2页 / 共41页
《数据库技术及应用》实验报告文档格式.docx_第3页
第3页 / 共41页
《数据库技术及应用》实验报告文档格式.docx_第4页
第4页 / 共41页
《数据库技术及应用》实验报告文档格式.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

《数据库技术及应用》实验报告文档格式.docx

《《数据库技术及应用》实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《《数据库技术及应用》实验报告文档格式.docx(41页珍藏版)》请在冰豆网上搜索。

《数据库技术及应用》实验报告文档格式.docx

源的操作,进而操作数据库。

下面是注册数据源的操作:

打开ODBC数据库管理器

在“ODBC数据源管理器”对话框中,单击“添加”按钮,弹出创建新数据源对话框,此处选择SQLSERVER为数据源驱动程序,如下图。

单击“完成”按钮后,弹出创建到SQLSERVER的新的数据源。

如下图。

成功建立数据源

2.创建单文档应用程序

1)启动VisualC++6.0,选择File|New,弹出New对话框,选择Projects标签,然后再列

表中选中选择MFCAppWizard[exe]选项,在“Projectname”文本框中输入工程文件名

(根据需要自己确定),在“Location”中指定应用文件创建的位置,如下图所示:

单击确定,选择单文档

点击数据源,按钮,弹出DatabaseOptions对话框如下图所示,在ODBC的下拉列

表中选择学生信息数据源。

单击OK,弹出SelectDatabaseTables对话框,如下图所示,选择自己要链接的表S。

单击OK,单击Next按钮,这一步中选择文档类型为容器类型,如下图所示。

单击Next,之后都是默认,单击Finish完成。

到此初步的工程已经建好,下面进行界

面的设计。

3.新建界面按钮

在项目工作窗口中选择ResourceView页面,双击Menu中的IDD_LIANXI2_FORM,

弹出文档模板和控件工具栏,构建界面如下图:

将学生信息系统部分的Editbox的ID分别改为IDC_ID_EDIT、IDC_NAME_EDIT、IDC_AGE_EDIT、IDC_DEPT_EDIT、IDC_CHECKNAME。

将按钮改为ID改为IDC_ADD、IDC_MODI、IDC_DEL、IDC_CHECK

4.添加新类CRecordsetAdd:

在工具栏上选择Insert|NewClass,添加一个新类CRecordset

Add,如下图所示:

单击OK,弹出DatabaseOptions对话框,如图所示,同样的选择数据源“学生信息”后,单击OK按钮,弹出SelectDatabaseTables对话框,选择表S,单击OK

5.数据的显示

在CRecordsetAdd中添加四个成员变量如下所示:

CStringm_Sno;

CStringm_Sname;

CStringm_Sage;

CStringm_Sdept;

同时其成员函数DoFieldExchange如下:

voidCRecordsetAdd:

:

DoFieldExchange(CFieldExchange*pFX)

{

//{{AFX_FIELD_MAP(CRecordsetAdd)

pFX->

SetFieldType(CFieldExchange:

outputColumn);

RFX_Text(pFX,_T("

[Sno]"

),m_Sno);

[Sname]"

),m_Sname);

RFX_Int(pFX,_T("

[Sage]"

),m_Sage);

[Sdept]"

),m_Sdept);

//}}AFX_FIELD_MAP

}

即采用了RFX机制实现了数据的交换。

在CLianxi2View:

DoDataExchange()函数中添加代码如下所示:

voidCLianxi2View:

DoDataExchange(CDataExchange*pDX)

CRecordView:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CLianxi2View)

DDX_Text(pDX,IDC_EDID_QUERY,m_strQuery);

DDX_Text(pDX,IDC_SQL_EDIT,m_sql);

DDX_FieldText(pDX,IDC_EDIT1,m_pSet->

m_Sno,m_pSet);

DDX_FieldText(pDX,IDC_EDIT2,m_pSet->

m_Sname,m_pSet);

DDX_FieldText(pDX,IDC_EDIT4,m_pSet->

m_Sdept,m_pSet);

DDX_FieldText(pDX,IDC_EDIT3,m_pSet->

m_Sage,m_pSet);

//}}AFX_DATA_MAP

这样就实现了数据的显示问题。

点击界面上的红色圆圈里的翻页按钮,可以逐个查看记录或查看第一页、最后页的记录:

6.“添加”的实现:

为了添加记录,添加一个对话框资源:

在项目工作去窗口中选择ResourceView页面,右键单击Dialog选择插入Dialog,则添加了一个对话框,为其添加四个Editbox,其ID分别为IDC_ID、IDC_NAME、IDC_AGE、IDC_DEPT。

同时按照前面所描述的方法为该对话框添加类CAddNew,如下图所示:

单击View|MFCClassWizard,在Project中选择lianxi2,在Classname中选择CAddNew,

则在下面的界面中显示对话框中的界面,选中IDC_AGE,单击AddVariable,弹出如图的

对话框,添加变量的名称,选择其类型。

7.实现添加功能的函数

在主对话框中,即在ResourceView页面中,双击IDD_LIANXI2_FORM,出现已经设

计好的主对话框后,双击添加按钮,出现对话框如下:

单击OK,为其添加函数如下所示:

OnAdd()

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData();

CAddNewdlg;

CStringstr;

CStringstr1;

CDatabasedb;

if(IDOK==dlg.DoModal())

{

try

{

str1.Format("

INSERTINTOS(Sno,Sname,Sage,Sdept)values('

%s'

'

)"

dlg.m_id,dlg.m_name,dlg.m_age,dlg.m_dept);

db.Open("

学生信息"

);

db.ExecuteSQL(str1);

}

catch(CDBException*e)

AfxMessageBox(e->

m_strError);

return;

str.Format("

添加[%s]成功!

"

dlg.m_name);

MessageBox(str,NULL,MB_OK|MB_ICONINFORMATION);

m_pSet->

m_Sno=dlg.m_id;

m_Sname=dlg.m_name;

m_Sage=dlg.m_age;

m_Sdept=dlg.m_dept;

UpdateData(FALSE);

}

执行结果:

点击添加按钮,弹出对话框,填写信息如下:

点击确定按钮,

被添加的记录在界面上成功显示

8.实现删除功能的函数

OnDel()

//CAddNewdlg;

CRecordsetAddm_pdatabase;

if(m_pdatabase.IsOpen())

m_pdatabase.Close();

删除记录[%s]成功!

m_pSet->

m_Sname);

m_pdatabase.Open(CRecordset:

snapshot,NULL,CRecordset:

none);

CRecordsetStatusstatus;

/////cl

GetStatus(status);

//////cl

m_pdatabase.Delete();

if(!

m_pdatabase.IsEOF())

m_pdatabase.MoveLast();

else

m_pdatabase.SetFieldNull(NULL);

Requery();

}

catch(CDBException*e)

执行结果如下:

删除成功,界面显示其他记录。

9.实现修改功能的函数

OnModi()

UPDATESSETSname='

Sage='

Sdept='

WHERESno='

dlg.m_name,dlg.m_age,dlg.m_dept,dlg.m_id);

修改[%s]成功!

;

}

修改前

点击修改按钮,弹出对话框,填写信息

修改结果:

10.为查询添加函数

OnCheck()

m_checkname.TrimLeft();

if(m_checkname.IsEmpty())

MessageBox("

要查询的学号不能为空!

CRecordsetrecset(&

db);

CStringstrSQL;

strSQL.Format("

SELECT*FROMSWHERESno='

m_checkname);

//执行的SQL语句

//打开查询结果集

recset.Open(CRecordset:

forwardOnly,strSQL,CRecordset:

readOnly);

if(recset.IsEOF())//查询结果集为空

没有查到你要找的学生记录!

MessageBox("

查询成功!

CStringtemp1,temp2,temp4;

CStringtemp3;

recset.GetFieldValue("

Sno"

temp1);

Sname"

temp2);

Sage"

temp3);

Sdept"

temp4);

//(int)(LPCTSTR)

m_Sno=temp1;

m_Sname=temp2;

m_Sage=temp3;

m_Sdept=temp4;

m_pSet->

IsEOF())

recset.Close();

输入查询信息:

点击主键查询后:

11.数据库记录显示

在MainFrm.cpp中,将indicators数组修改成如下代码:

staticUINTindicators[]=

ID_SEPARATOR,

ID_SEPARATOR,//statuslineindicator

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

在MainFrm.h中,将m_wndStatusBar改为public:

public:

//controlbarembeddedmembers

CStatusBarm_wndStatusBar;

CToolBarm_wndToolBar;

在“建立类向导”中,选中OnCommand,点击AddFunction如下图:

在该函数中添加代码:

BOOLCLianxi2View:

OnCommand(WPARAMwParam,LPARAMlParam)

Addyourspecializedcodehereand/orcallthebaseclass

CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->

m_pMainWnd;

CStatusBar*pStatus=&

pFrame->

m_wndStatusBar;

if(pStatus)

CRecordsetStatusrStatus;

GetStatus(rStatus);

当前记录:

%d/总记录:

%d"

1+rStatus.m_lCurrentRecord,m_pSet->

GetRecordCount());

pStatus->

SetPaneText(1,str);

returnCRecordView:

OnCommand(wParam,lParam);

执行结果如图红色部分:

12.新建表。

添加按钮”新建表”,ID改为IDC_CreateTalbebutton1,函数如下:

OnCreateTalbebutton1()

//if(!

SQLConfigDataSource(NULL,ODBC_ADD_DSN,"

SQLServer"

"

DSN=学生信息"

));

try

db.ExecuteSQL("

CREATETABLETEACHERS(TeacherIDCHAR(4)"

TeacherNameCHAR(10)"

CourseCHAR(10))"

新建表成功!

点击按钮前,数据库中的表如下图:

点击新建表按钮:

打开数据库进行查看:

13.删除表

添加按钮“删除表”,ID改为IDC_DelNewtalbeButton。

函数代码如下:

OnDelNewtalbeButton()

DROPTABLETEACHERS"

m_xiugaiflag=0;

删除表成功!

数据库中已没有TEACHERS表

14.添加数据

添加了一个对话框,为其添加三个Editbox,其ID分别为IDC_TeacherID、IDC_TeacherName、IDC_Course。

在类向导里为其添加cstring类型的变量m_teacherid,m_teachername,m_Course.为其建立类CSHUJUNew,该类继承自类Cdialog。

再添加一个对话框,为其添加四个Editbox,其ID分别为IDC_TeacherID、IDC_TeacherName、IDC_Course、IDC_TeacherAge。

在类向导里为其添加cstring类型的变量m_teacherid,m_teachername,m_Course,m_teacherage.为其建立类CSHUJUNew2,该类继承自类Cdialog。

设置一个xiugaiflag标志,当表被修改时,xiugaiflag标志置为1。

否则,置为0。

当xiugaiflag==0时调用教师信息表1,xiugaiflag==1时调用教师信息表2

添加按钮“添加数据”,ID改为IDC_AddNewtableButton。

OnAddNewtableButton()

CSHUJUNewdlg;

CSHUJUNew2dlg2;

if(m_xiugaiflag==0)

{if(IDOK==dlg.DoModal())

str1.Format("

INSERTINTOTEACHERS(TeacherID,TeacherName,Course)VALUES('

dlg.m_teacherid,dlg.m_teachername,dlg.m_Course);

catch(CDBException*e)

e->

ReportError();

添加数据成功!

elseif(m_xiugaiflag==1)

if(IDOK==dlg2.DoModal())

INSERTINTOTEACHERS(TeacherID,TeacherName,Course,TeacherAge)VALUES('

dlg2.m_teacherid,dlg2.m_teachername,dlg2.m_Course,dlg2.m_teacherage);

点击添加数据按钮,填写教师信息表

点击确定,查看数据库

点击修改表后,再点击添加数据按钮,

查看数据库

15.修改表

添加按钮“修改表”,ID修改为IDC_ModButton,

否则,置为0

OnModButton()

Addyourcontrol

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

当前位置:首页 > 高等教育 > 艺术

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

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