orcle数据库课程设计.docx
《orcle数据库课程设计.docx》由会员分享,可在线阅读,更多相关《orcle数据库课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
![orcle数据库课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/29/172c0c2e-479e-4bb2-883f-8e882b4c690d/172c0c2e-479e-4bb2-883f-8e882b4c690d1.gif)
orcle数据库课程设计
《oracle网络数据库》课程设计
题目:
事务管理系统
系别:
数学与信息工程学院
专业(含班级):
10软件
(1)班
学号:
姓名:
指导教师:
职称讲师
填表日期:
2011年9月4日
一、选题的依据及意义:
Oracle是一款安全性很高的大型数据库,它比sql或是access等中小型的数据库最大的特点就是安全性高,很多大型软件一般都采用oracle作为后台数据库,而且oracle读取数据快也是它的特点,稳定性也比其他数据库好很多,以前在学习过程中很少接触oracle而是比较多用sql或是access作为后台数据库,现在通过跟田老师学了一学期的oracle数据,发现oracle数据库是很重要的,所以要学会灵活的使用,虽然oracle数据库的语法和sql和access的语法基本上没有什么差别,但oracle有它自己独特的技术,有时候学起来很吃力,很多的概念机会没有接触过,比如游标技术很少接触,也不知道这么使用,现在自己就尝试的使用oracle作为后台的数据库和vs2005作为前台进行开发事务管理系统小软件,体会oracle数据库的带来的优点,现在很多公司也要求他的员工一定要懂的oracle数据库技术,这是主流。
当然sql在中小型的软件公司比较多用,当是作为一个程序开发者必须要懂得oracle数据库开发技术。
现在,数据库技术还在不断发展,并且不断的与其它计算机技术相互渗透.数据库技术与网络通信技术相结合,产生了分布式数据库系统.数据库技术与面向对象技术相结合,产生了面向对象数据库系统等各种数据库系统.
在人类迈向21世纪知识经济的时候,信息变为经济发展的战略资源,信息技术已成为社会生产力重要的组成部分.人们充分认识到,数据库是信息化社会中信息资源管理与开发利用的基础.对于一个国家,数据库的建设规模,使用水平已成为衡量该国信息化程度的重要标志.因此,数据库的学习是非常重要的.
二、本课程设计内容(或要求)
1.首先在oracle里创建后台数据库
2.如何在vs2005中创建项目后在.net组件中添加引用oracle的命名空间也就是Systems.Data.OracleClient添加到项目中去。
3.添加完后引用命名空间UsingSystem.Data.OracleClient;
4.在前台程序连接后台的oracle数据库
5.如何使用OracleConnection进行连接数据库
6.如何使用OracleCommand执行sql语句
7.如何使用OracleDataReader读取数据
8.如何使用ExecuteNonQuery()执行非查询的SQL语句
9.如何打开和关闭念数据库
三、研究目标
能成功连接数据库,并对数据库的数据进行操作,在开发过程中体会oracle与sql数据库的异同,了解oracle数据库的读取速度,因为对oracle数据库不太熟悉所以要求要会在不断调试过程中更多的了解oracle技术的特点。
了解oracle的优点是什么,在那些方面最突出,并要查阅相关资料进一步理解oracle数据库操作,最终能实现前台对oracle数据库的正确操作。
《oracle网络数据库》课程设计实现方案
1.在oracle中创建表代码如下
(1)创建表shiwu。
创建表shiwu的脚本如下:
CREATETABLEshiwu
(IdNUMBERPRIMARYKEY,
CreateDateVARCHAR2(50)NOTNULL,
SubjectVARCHAR2(100)NOTNULL,
StatusVARCHAR2(50)NOTNULL,
tTypeIdNUMBER,
PlaceVARCHAR2(100),
TeacherVARCHAR2(50),
StartDateVARCHAR2(50),
EndDateVARCHAR2(50),
SignSDateVARCHAR2(50),
SignEDateVARCHAR2(50),
AttendantVARCHAR2(100),
IsFreeNUMBER
(1),
CostNUMBER,
DetailVARCHAR2(3000),
AttListVARCHAR2(1000));
(2)创建表shiwugSign。
创建表shiwuSign的脚本如下:
CREATETABLEshiwuSign
(IdNUMBERPRIMARYKEY,
TrIdNUMBER,
SignDateVARCHAR2(50),
EmpNameVARCHAR2(10),
StatusVARCHAR2(50)
);
3)创建表Meeting。
创建表Meeting的脚本如下:
CREATETABLEclz.Meeting
(IdNUMBERPRIMARYKEY,
SubjectVARCHAR2(200),
StartDateVARCHAR2(50),
EndDateVARCHAR2(50),
StartTimeVARCHAR2(50),
EndTimeVARCHAR2(50),
RoomNoVARCHAR2(20),
PresideVARCHAR2(100),
OAttendantVARCHAR2(1000),
IAttendantVARCHAR2(1000),
DetailVARCHAR2(4000),
StatusVARCHAR2(10),
CreateDateVARCHAR2(50),
EmpNameVARCHAR2(10)
);
(4)创建表MeetingRooms。
创建表MeetingRooms的脚本如下:
CREATETABLEclz.MeetingRooms
(RoomNoVARCHAR2(20),
RoomNameVARCHAR2(50),
RoomSizeNUMBER,
ResourcesVARCHAR2(500)
);
(5)创建表Information。
创建表Information的脚本如下:
CREATETABLEclz.Information
(InfoNoVARCHAR2(20)NOTNULL,
InfoNameVARCHAR2(100),
InfoTypeVARCHAR2(50),
ICountNUMBER,
IPriceNUMBER,
DetailVARCHAR2(2000),
CreateDateVARCHAR2(50)
);
(6)创建表InfoIn。
创建表InfoIn的脚本如下:
CREATETABLEclz.InfoIn
(IdNUMBERPRIMARYKEY,
InDateVARCHAR2(50),
InfoNoVARCHAR2(20),
InCountNUMBER,
EmpNameVARCHAR2(40),
DetailVARCHAR2(2000),
FlagNUMBER
);
(7)创建表InfoLend。
创建表InfoLend的脚本如下:
CREATETABLEclz.InfoLend
(IdNUMBERPRIMARYKEY,
InfoNoVARCHAR2(20),
LendDateVARCHAR2(50),
EmpNameVARCHAR2(40),
LendCountNUMBER,
FlagNUMBER
);
(8)创建表Users。
创建表Users的脚本如下:
CREATETABLECLZ.Users
(UserNameVARCHAR2(40)PRIMARYKEY,
EmpNameVARCHAR2(40)NOTNULL,
UserPwdVARCHAR2(40)NOTNULL,
UserTypeNUMBER
);
(9)创建表ygxinxi。
创建表ygxinxi的脚本如下:
CREATETABLECLZ.ygxinxi(
EmpNoVARCHAR2(10)PRIMARYKEY,
EmpNameVARCHAR2(50)NOTNULL,
EmpVARCHAR2(50)NOTNULL,
TelphoneVARCHAR2(50)NOTNULL
);
(10)创建表zhiban。
创建表zhiban的脚本如下:
CREATETABLECLZ.zhiban(
EmpNOVARCHAR2(10)PRIMARYKEY,
EmpNameVARCHAR2(50)NOTNULL,
ZbgangweiVARCHAR2(50)NOTNULL,
ZDateVARCHAR2(50)NOTNULL)
最后用COMMIT命令提交表
2.建立操作数据库的类方便调用
publicclassCADOConn
{publicOracleConnectionconn;//用于连接Oracle数据库
OracleCommandcommand;//用于执行SQL语句
//连接字符串
StringConnString="DataSource=.;PersistSecurityInfo=True;UserID=clz;Password=clz;Unicode=True";
…….
}
(1).CADOConn()函数的代码如下:
CADOConn()
{
conn=newOracleConnection(ConnString);
}
(2).OracleDataReaderGetDataReader(Stringsql)函数的代码如下:
//执行查询语句
publicOracleDataReaderGetDataReader(Stringsql)
{
try
{
OracleDataReaderreader;
//如果没有连接,则建立连接
if(conn==null)
conn=newOracleConnection(ConnString);
//定义OracleCommand对象,用于执行SELECT语句
command=newOracleCommand(sql,conn);
conn.Open();//打开数据库连接
reader=command.ExecuteReader();//执行SELECT语句,数据保存到OracleDataReader对象中
returnreader;//返回读取的OracleDataReader对象
}
catch(Exceptione)
{
throwe;
}
}
(3).boolExecuteSQL(Stringsql)函数的代码如下:
//执行INSERT、UPDATE或DELETE语句
publicboolExecuteSQL(Stringsql)
{
try
{
//如果没有连接,则建立连接
if(conn==null)
conn=newOracleConnection(ConnString);
//定义OracleCommand对象,用于执行SELECT语句
command=newOracleCommand(sql,conn);
conn.Open();//打开数据库连接
command.ExecuteNonQuery();//执行非查询的SQL语句
conn.Close();//关闭数据库连接
returntrue;//返回true,表示成功
}
catch(Exceptione)
{
throwe;
}
3部分代码实现
(1)登录模块实现代码
privatevoidbtnOK_Click(objectsender,EventArgse)
{
if(txtUserName.Text.Trim()=="")
{
MessageBox.Show("请输入用户名");
txtUserName.Focus();
return;
}
if(txtUserPwd.Text.Trim()=="")
{
MessageBox.Show("请输入密码");
txtUserPwd.Focus();
return;
}
//获取用户信息
FrmMain.curUser.GetData(txtUserName.Text.Trim());
//如果次登录失败,则退出系统
if(logincount>=3)
Application.Exit();
if(FrmMain.curUser.UserPwd!
=txtUserPwd.Text.Trim())
{
logincount++;
MessageBox.Show("用户名不存在或密码不正确");
return;
}
Close();
}
(2)会议处理模块代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Data;
usingSystem.Data.OracleClient;
namespaceOffice
{
publicclassCMeeting
{
publicintId;//会议编号
publicStringSubject;//会议主题
publicStringStartDate;//开始日期
publicStringEndDate;//结束日期
publicStringStartTime;//开始时间
publicStringEndTime;//结束时间
publicStringRoomNo;//会议室编号
publicStringPreside;//主持人
publicStringOAttendant;//外部与会人员
publicStringIAttendant;//内部与会人员
publicStringDetail;//会议内容介绍
publicStringStatus;//当前状态:
创建、发布
publicStringCreateDate;//创建时间
publicStringEmpName;//创建人
//下面两个数据在Load_by_NoDate()函数中使用
publicString[]a_MeetId;
publicString[]a_MeetSubject;
//初始化参数
publicvoidInit()
{
Id=0;
Subject="";
StartDate="";
EndDate="";
StartTime="";
EndTime="";
RoomNo="";
Preside="";
OAttendant="";
IAttendant="";
Detail="";
Status="";
CreateDate="";
EmpName="";
a_MeetId=newstring[500];
a_MeetSubject=newstring[500];
}
//构造函数
publicCMeeting()
{
Init();
}
//读取指定的记录,参数cId表示要读取的记录编号
publicvoidGetData(StringcId)
{
CADOConnm_ado=newCADOConn();
OracleDataReaderreader;
Stringsql;
sql="SELECT*FROMMeetingWHEREId="+cId;
//执行SELECT语句
reader=m_ado.GetDataReader(sql);
if(!
reader.Read())
Init();
else
{
Id=int.Parse(reader["Id"].ToString());
Subject=reader["Subject"].ToString();
StartDate=reader["StartDate"].ToString();
EndDate=reader["EndDate"].ToString();
StartTime=reader["StartTime"].ToString();
EndTime=reader["EndTime"].ToString();
RoomNo=reader["RoomNo"].ToString();
Preside=reader["Preside"].ToString();
OAttendant=reader["OAttendant"].ToString();
IAttendant=reader["IAttendant"].ToString();
Detail=reader["Detail"].ToString();
Status=reader["Status"].ToString();
CreateDate=reader["CreateDate"].ToString();
EmpName=reader["EmpName"].ToString();
}
}
//判断某个时间段是否存在会议记录,参数cId表示会议编号
publicboolHaveMeeting(StringcId)
{boolresult;
CADOConnm_ado=newCADOConn();
OracleDataReaderreader;
Stringsql;
sql="SELECT*FROMMeetingWHERERoomNo='"+RoomNo+"'AND('"+StartDate+"'BETWEENStartDateANDEndDateOR'"
+EndDate+"'BETWEENStartDateANDEndDate)AND('"
+StartTime+"'BETWEENStartTimeANDEndTimeOR'"
+EndTime+"'BETWEENStartTimeANDEndTime)ANDId<>"+cId;
//执行SELECT语句
reader=m_ado.GetDataReader(sql);
if(reader==null)
result=false;
else
result=true;
returnresult;
}
//查找某个时间段内的会议信息记录,参数TmpRNo表示会议室编号,TmpDate表示指定日期,TmpSTime表示时间段的开始时间,TmpETime表示时间段的结束时间
publicvoidLoad_by_NoDate(StringcRoomNo,StringcDate,StringcSTime,StringcETime)
{CADOConnm_ado=newCADOConn();
OracleDataReaderreader;
Stringsql;
sql="SELECTSELECTId,SubjectFROMMeetingWHERERoomNo='"
+cRoomNo+"'AND'"+cDate+"'BETWEENStartDateANDEndDateAND"
+"((StartTime<='"+cSTime+"'ANDEndTime>'"+cSTime
+"')OR(StartTime<'"+cETime+"'ANDEndTime>='"+cETime+"'))";
//执行SELECT语句
reader=m_ado.GetDataReader(sql);
inti=0;
while(reader.Read())
{
a_MeetId[i]=reader["Id"].ToString();
a_MeetSubject[i]=reader["Subject"].ToString();
i++;
}
}
//删除指定的记录,参数cId表示记录编号
publicvoidsql_delete(StringcId)
{CADOConnm_ado=newCADOConn();
Stringsql="DELETEFROMMeetingWHEREId="+cId;
m_ado.ExecuteSQL(sql);
}
//插入新的记录
publicvoidsql_insert()
{//获取当前时间
System.DateTimenow=newSystem.DateTime();
now=System.DateTime.Now;
CreateDate=now.ToString();
CADOConnm_ado=newCADOConn();
Stringsql="INSERTINTOMeetingVALUES(OFFICESYS.S_MEETINGID.NEXTVAL,'"
+Subject+"','"+StartDate+"','"+EndDate+"','"+StartTime+"','"
+EndTime+"','"+RoomNo+"','"+Preside+"','"+OAttendant+"','"
+IAttendant+"','"+Detail+"','创建','"+CreateDate+"','"+EmpName+"')";
m_ado.ExecuteSQL(sql);
}
publicvoidsql_update(StringcId)//修改指定的记录,参数cId表示记录编号
{
CAD