音乐网站管理系统.docx
《音乐网站管理系统.docx》由会员分享,可在线阅读,更多相关《音乐网站管理系统.docx(13页珍藏版)》请在冰豆网上搜索。
音乐网站管理系统
表1-1用户信息表(siteUser)
字段名称
说明
数据类型
字段长度
是否允许空
约束
userID
编号
Nvarchar2
4
否
主键
userName
姓名
Nvarchar2
8
否
password
密码
Nvarchar2
8
是
isAdmin
是否管理员
number
1
否
取值是0或1,默认0
表1-2专辑表(Album)
字段名称
说明
数据类型
字段长度
是否允许空
约束
albumID
专辑编号
Nvarchar2
4
否
主键
albumName
专辑名称
Nvarchar2
20
否
albumIntro
专辑简介
Nvarchar2
2000
是
issueDate
发行时间
date
是
singerID
歌手编号
Nvarchar2
4
否
languageID
语言编号
Nvarchar2
4
否
classifyID
分类编号
Nvarchar2
4
否
表1-3歌手表(Singer)
字段名称
说明
数据类型
字段长度
是否允许空
约束
singerID
歌手编号
Nvarchar2
4
否
主键
singerName
姓名
Nvarchar2
20
否
isGroup
是否组合
number
1
否
取值是0或1,默认0
sex
性别
number
1
是
检查约束(男,女)
表1-4语言表(Language)
字段名称
说明
数据类型
字段长度
是否允许空
约束
languageID
语言编号
Nvarchar2
4
否
主键
languageName
语言名称
Nvarchar2
20
否
表1-5专辑分类表(albumClassify)
字段名称
说明
数据类型
字段长度
是否允许空
约束
classifyID
分类编号
Nvarchar2
4
否
主键
classifyName
分类名称
Nvarchar2
20
否
表1-6歌曲表(Song)
字段名称
说明
数据类型
字段长度
是否允许空
约束
songID
歌曲编号
Nvarchar2
4
否
主键
songName
歌曲名称
Nvarchar2
20
否
singerID
歌手编号
Nvarchar2
4
否
votes
人气值
number
1
否
默认值0
songFile
歌曲文件
blob
否
1.创建数据库表
1)创建siteUser(用户信息表)
CreatetablesiteUser(
userIDNvarchar2(4)constraintpk_siteUserprimarykey,
userNameNvarchar2(20)notnull,
PasswordNvarchar2(8),
isAdminnumber
(1)default0check(isAdminin(0,1)));
2)创建Album(专辑表)
CreatetableAlbum(
albumIDNvarchar2(4)constraintpk_Albumprimarykey,
albumNameNvarchar2(20)notnull,
albumIntroNvarchar2(2000),
issueDatedate,
singerIDNvarchar2(4)notnull,
languageIDNvarchar2(4)notnull,
classifyIDNvarchar2(4)notnull);
3)创建表Singer(歌手表)
CreatetableSinger(
singerIDNvarchar2(4)constraintpk_Singerprimarykey,
singerNameNvarchar2(20)notnull,
isGroupnumber
(1)default0check(isGroupin(0,1))
sexnchar
(1));
4)创建Language表(语言表)
CreatetableLanguage(
languageIDNvarchar2(4)constraintpk_Languageprimarykey,
languageNameNvarchar2(20)notnull);
5)创建albumClassify表(专辑分类表)
CreatetablealbumClassify(
classifyIDNvarchar2(4)constraintpk_albumClassifyprimarykey,
classifyNameNvarchar2(20)notnull);
6)创建表Song(歌曲表)
CreatetableSong(
songIDNvarchar2(4)constraintpk_Songprimarykey,
songNameNvarchar2(20)notnull,
singerIDNvarchar2(4)notnull,
votesnumber
(1)default0,
song);
2.创建约束
1)创建表singer的检查约束signer_chk1:
Altertablesigneraddconstraintsinger_chk1check(sexin(‘男’,’女’));
2)创建表album的外键约束Abbum_singer_fk1:
AltertablealbumaddconstraintAbbum_signer_fk1foreignkey(singerID)referencesigner(singerID);
3)创建表album的外键约束Abbum_language_fk1:
AltertablealbumaddconstraintAbbum_language_fk1foreignkey(languageID)referenceslanguage(languageID);
4)创建表album的外键约束Abbum_classify_fk1:
AltertablealbumaddconstraintAbbum_classify_fk1foreignkey(classifyID)referencesAblumclassify(classifyID);
5)创建表Song的外键约束Song_Singer_fk1:
AltertableSongaddconstraintSong_Singer_fk1foreignkey(singerID)referencesSinger(singerID);
3.创建视图
1)创建视图V_album用以显示专辑信息
Createorreplaceviewv_album
As
Selectt1.albumID,t1.albumName,t1.albumIntro,t1.issueDate,
t4.singerName,t3.languageName,t2.classifyName
Fromalbumt1innerjionalbumclassifyt2ont1.classifyID=t2.classifyID
Innerjionlanguaget3ont1.languageID=t3.languageID
INNERJOINsingert4ont1.singerID=t4.singerID;
2)显示歌曲信息
Createorreplaceviewv_song
As
Selectt1.songID,t1.songName,t2.singerName,t1.votes,t1.songsongt1innerjoinsingert2ont1.singerID=t2.singerID;
4.创建存储过程
1)向专辑表(album)中插入数据的存储过程
Createorreplaceproceduresp_insertAlbum
(
AlbumIDNVARCHAR2,
albumNameNVARCHAR2,
albumIntroNVARCHAR2,
isssueDateDATE,
SingerIDNVARCHAR2,
languageIDNVARCHAR2,
classifyIDNVARCHAR2)
AS
BEGIN
Insertintoalbumvalues(
AlbumID,albumName,albumIntro,issueDate,singerID,languageID,classifyID);
ENDsp_insertAlbum;
2)修改专辑表数据的存储过程
Createorreplaceproceduresp_updateAlbum
(
fAlbumIDNVARCHAR2,
falbumNameNVARCHAR2,
falbumIntroNVARCHAR2,
fisssueDateDATE,
fSingerIDNVARCHAR2,
flanguageIDNVARCHAR2,
fclassifyIDNVARCHAR2)
AS
BEGIN
Updatealbumsett
AlbumID=fAlbumID,
albumName=falbumName,
albumIntro=falbumIntro,
issueDate=fisssueDate,
singerID=fSingerID,
LanguageID=flanguageID,
ClassifyIDfclassifyID;
ENDsp_updateAlbum;
3)创建删除专辑表数据的存储过程
Createorreplaceproceduresp_deleteAlbum
(
fAlbumIDNVARCHAR2)
As
Begin
DeletefromalbumwherealbumID=falbumID;
ENDsp_deletefalbum;
ConnectionFactory类:
Packagecn.edu.hbsi.db;
Importjava.io.IOException;
Importjava.io.InputStream;
Importjava.sql.Connection;
Importjava.sql.DriverManager;
Importjava.sql.SQLException;
Importjava.util.Properties;
//获得数据库连接
PublicclassConnectionFactory{
//数据库驱动类名
PrivatestaticStringDRIVER=””;
//连接数据库的URL
PrivatestaticStringURL=””;
//连接数据库的用户名
PrivatestaticStringUSERNAME=””;
//连接数据库的密码
PrivatestaticStringPASSWORD=””;
PrivateConnectionFactory{
}
Static{
getPropertiesInfo();
}
//该方法用来获得属性文件中的driver,url,username,password
PrivatestaticgetPropertiesInfo(){
Propertiesprop=newProperties();
InputStreaminStream=Thread.currentThread().getContextClassLoader().
getResourseAsStream(“jdbcCon.properties”);
Try{
//获得相应的键值对
Prop.load(inStream);
}
Catch(IOExceptione){
e.printStaticTrace();
}
//根据相应的键获得对应的值
DRIVER=prop.getProperty(“driver”);
URL=prop.getProperty(“url”);
USERNAME=prop.getProperty(“username”);
PASSWORD=prop.getProperty(“password”);
}
//该方法用来加载驱动,并会的数据库的连接对象@return数据库连接对象conn
PublicstaticConnectiongetConnection(){
Connectionconn=null;
Try{//加载驱动程序
Class.forName(DRIVER);
}
catch(ClassNotFoundExcepyione){
e.printStaticTrace();
}
Try{
//获得数据库连接的对象
Conn=DriverManager.getConnection(URL.USERNAME,PASSWORD);
}
Catch(SQLExceptione){
e.printStaticTrace();
}
Returnconn;
}
}
DbClose类:
Pacagecn.edu.hbsi.db;
Importjava.sql.Connection;
Importjava.sql.Result;
Importjava.sql.SQLExcwption;
Importjava.sql.Statement;
PublicclassDbClose{
Publicstaticvoidclose(Connectionconn){
If(null!
=conn){
Try{
Conn.close();
}
Catch(SQLExceptione){
e.printStaticTrace();
}
}
}
Publicstaticvoidclose(Statementstmt){
If(null!
=stmt){
Try{
stmt.close();
}
Catch(SQLExceptione){
e.printStaticTrace();
}
}
}
Publicstaticvoidclose(ResultSetrs){
If(null!
=rs){
Try{
rs.close();
}
Catch(SQLExceptione){
e.printStaticTrace();
}
}
}
Publicstaticvoidclose(ResultSetrs,Statementstmt,Connectionconn){
Close(rs);
Close(stmt,conn);
}
Publicstaticvoidclose(Statementstmt,Connectionconn){
Close(stmt);
Close(conn);
}
}
核心模块的实现:
1)在Calbum类中编写insertAlbum方法,调用ORACLE数据库中的存储过程SP_INSERTALBUM实现插入数据操作:
PublicvoidinsertAlbum(StringALBUMID,StringALBUMNAME,StringALBUMINTRO,DATEISSUEDATE,StringSINGERID){
Connectioncon=null;
CallableStatementcs=null;
ResultSetrs=null;
Try{
Con=ConnectionFactory.getConnection();
Stringsql=”{callSP_INSERTALBUM(?
?
?
?
?
?
?
)}”;
cs=con.prepareCall(aql);
cs.setString(1,ALBUMID);
cs.setString(2,ALBUMNAME);
cs.setString(3,ALBUMINTRO);
cs.setString(4,ISSUEDATE);
cs.setString(5,SINGERID);
cs.setString(6,LANGUAGEID);
cs.setString(7,CLASSIFYID);
Cs.execute();
Catch(Excepyione){
e.printStaticTrace();
}
Finally{
Dbclose.close(rs,cs,conn);
}
}