12011611018李力兵上机4.docx
- 文档编号:27463930
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:16
- 大小:221.93KB
12011611018李力兵上机4.docx
《12011611018李力兵上机4.docx》由会员分享,可在线阅读,更多相关《12011611018李力兵上机4.docx(16页珍藏版)》请在冰豆网上搜索。
12011611018李力兵上机4
将代码贴在各题下面,将运行结果贴在各题下面。
1、课本P248第4题。
截图:
2、课本P248第6题。
3、课本P248第16题。
并且按三层架构模式编程实现以下功能:
(1)实现对Customer信息的增加、修改、删除、查询,(先往Customer表中增加一些测试记录,然后再修改、删除、查询);
提示:
(a)按16题要求,在Access中创建2个表并建立关联(主外键关联);
(b)创建一个CustomerGUI类,作为界面类,如下图所示界面。
在这样一个界面,可以实现新增、修改、删除、查询任务。
(c)创建一个Customer实体类,用来描述客户的基本信息。
基本上,只有属性定义。
publicclassCustomer
{
privateStringCustomerName;
privateStringCustomerID;
publicStringgetName(){
returnCustomerName;
}
publicvoidsetName(Stringname){
this.CustomerName=name;
}
publicStringgetAddress(){
returnCustomerID;
}
publicvoidsetAddress(StringID){
this.CustomerID=ID;
}
}
(d)创建一个DB类,提供connectDB()、disconnectDB()等方法。
甚至还可以定义一些其他方法,如:
executeSQL(),executeUpdate(),executeDelete(),executeInsert()等。
importjava.sql.*;
publicclassDB
{
staticStringurl="jdbc:
odbc:
myDatasource";
staticConnectioncon;
publicstaticConnectiongetCon(){
returncon;
}
publicstaticvoidsetCon(Connectioncon){
DB.con=con;
}
publicstaticConnectionconnectDB()
{
try
{
Class.forName("sum.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection(url,"","");
}
catch(ClassNotFoundExceptione)
{
System.out.println(e);
}
catch(SQLExceptione)
{
System.out.println(e);
}
returncon;
}
publicstaticvoiddisconnectDB()
{
try
{
con.close();
}
catch(SQLExceptione)
{
System.out.println(e);
}
}
}
(e)创建一个CustomerDAL类,提供add、update、delete、findAll、findByName等方法,每个方法里面,都要完成该方法所要做的事情。
一般过程是:
调用DB类的connectDB方法然后执行sql命令调用DB类的disconnectDB方法
importjava.sql.*;
publicclassCustomerDAL
{
Statementstmt=null;
voidadd(Stringsql)
{
try
{
DB.connectDB();
stmt=DB.getCon().createStatement();
stmt.executeUpdate(sql);
}
catch(SQLExceptione)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
finally
{
try
{
if(stmt!
=null)
stmt.close();
if(DB.getCon()!
=null)
DB.disconnectDB();
}
catch(SQLExceptione)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
voidupdate(Stringsql)
{
try
{
DB.connectDB();
stmt=DB.getCon().createStatement();
stmt.executeUpdate(sql);
}
catch(SQLExceptione)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
finally
{
try
{
if(stmt!
=null)
stmt.close();
if(DB.getCon()!
=null)
DB.disconnectDB();
}
catch(SQLExceptione)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
voiddelete(Stringsql)
{
try
{
DB.connectDB();
stmt=DB.getCon().createStatement();
stmt.executeUpdate(sql);
}
catch(SQLExceptione)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
finally
{
try
{
if(stmt!
=null)
stmt.close();
if(DB.getCon()!
=null)
DB.disconnectDB();
}
catch(SQLExceptione)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
}
(f)创建一个CustomerBLL类,这里提供add、update、delete、findAll、findByName等方法。
这里的方法,都要调用CustomerDAL类中对应的方法。
importjava.sql.*;
publicclassCustomerDAL{
staticCustomeraCustomer;
staticStringurl="jdbc:
odbc:
myDataSource";
staticConnectionaConnection;
staticStatementaStatement;
staticStringname;
staticStringsex;
staticintage;
staticStringaddress;
/*添加一个新记录*/
publicstaticvoidadd(CustomeraCustomer)throwsDuplicateException{
name=aCustomer.getname();
sex=aCustomer.getsex();
age=aCustomer.getage();
address=aCustomer.getaddress();
Stringsql="INSERTINTOCustomerT(Name,SEX,Age,Address)"
+"VALUES('"+name+"','"+sex+"','"+age+"','"+address+"')";
System.out.println(sql);
try{
Customerc=findAll();
throw(newDuplicateException("该用户已存在"));
}
catch(NotFoundExceptione){
try{
intresult=aStatement.executeUpdate(sql);
}
catch(SQLExceptionee){
System.out.println(ee);
}
}
}
/*更新指定的记录*/
publicstaticvoidupdate(CustomeraCustomer)throwsNotFoundException{
name=aCustomer.getname();
sex=aCustomer.getsex();
age=aCustomer.getage();
address=aCustomer.getaddress();
Stringsql="UpdateCustomerTSETName='"+name+"',"
+"Sex='"+sex+"'"+"Age='"+age+"'"+"Address='"+address+"'";
try{
intresult=aStatement.executeUpdate(sql);
}
catch(SQLExceptione){
System.out.println(e);
}
}
/*删除指定的记录*/
publicstaticvoiddelete(CustomeraCustomer)throwsNotFoundException{
name=aCustomer.getname();
Stringsql="DELTTEFROM CustomerT"+"WHEREname='"+name+"'";
try{
intresult=aStatement.executeUpdate(sql);
}
catch(SQLExceptione){
System.out.println(e);
}
}
//查询CustomerT表中的所有的信息
publicstaticCustomerfindAll(){
Stringurl;
Connectionconn=null;
Statementstmt=null;
StringcontactID;
Stringname;
//生成查询语句
Stringsqlx="selectcontactID,namefromcontactT";
/*连接数据库并执行查询语句,释放连接*/
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//指定myDataSource数据源
url="jdbc:
odbc:
myDataSource";
conn=DriverManager.getConnection(url,"","");
//创建一个Statement实例
stmt=conn.createStatement();
//执行SQL查询语句sqlx
ResultSetrs=stmt.executeQuery(sqlx);
//从结果集合rs读取数据
while(rs.next()){
contactID=rs.getString("contactID");
name=rs.getString("name");
System.out.println(contactID+","+name);
}
rs.close();
}
catch(ClassNotFoundExceptione){
System.out.println(e);
}
catch(SQLExceptione){
System.out.println(e.getMessage());
//显示异常信息
e.printStackTrace();
}
finally{
try{
//释放Statement所用的资源
if(stmt!
=null)stmt.close();
if(conn!
=null)conn.close();
}
catch(SQLExceptione){
System.out.println(e.getMessage());
e.printStackTrace();
}
}
returnnull;
}
publicvoidfindByName(){
}
publicvoidfindOrdersByCustomer(){
}
(g)在界面类中,调用CustomerBLL类中的相应方法完成任务。
publicclassCustomerBLL{
publicvoidadd(){
CustomeraCustomer=newCustomer();
System.out.println("要添加的记录是:
"+aCustomer.add());
}
publicvoidupdate(){
CustomeraCustomer=newCustomer();
System.out.println("要更新的记录是:
"+aCustomer.update());
}
publicvoiddelete(){
CustomeraCustomer=newCustomer();
System.out.println("要删除的记录是:
"+aCustomer.delete);
}
publicvoidfindAll(){
CustomeraCustomer=newCustomer();
System.out.println("要查询的记录是:
"+aCustomer.findAll);
}
}
(2)实现对Order信息的增加(往Order表中增加一些测试记录,需要注意,Order记录跟Customer记录有关联,同上步骤a-g,只需完成增加功能------提示:
需要OrderGUI、Order实体类、OrderDAL、OrderBLL等类,可复用DB类的connectDB、disconnectDB方法);
(3)查询Customer的订单信息(注意:
需要体现类之间的1对多关系)。
------提示:
可以在
(1)的CustomerGUI界面类中,增加一个区域来显示查询结果。
需要在CustomerBLL、CustomerDAL类中提供一个findOrdersByCustomer()方法,然后在CustomerGUI中调用CustomerBLL类中的findOrdersByCustomer()方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12011611018 李力兵 上机