




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
千里之行,始于足下让知识带有温度。第第2页/共2页精品文档推荐java连接数据库课程设计*******高校
同学试验报告
试验课程名称J2EE及JAVA程序设计
开课试验室DS1501
学院软件学院年级2022专业班2班
同学姓名学号
开课时光2022至2022学年第2学期
总成果
老师签名
软件学院制
《J2EE及JAVA程序设计》试验报告
开课试验室:DS15012022年6月18日学院软件学院软工2班姓名成果
课程名称J2EE及JAVA程序设
计
试验项目
名称
试验6-8:图形界面编程、
抽象类与接口、数据库。
指导老师
老师
评语老师签名:
2022年代日
一、试验目的
试验六:基本把握使用JAVA来完成基本的图形界面等调试与编程,实现理论课上叙述的内容PPT内容的验证。
试验七:把握抽象类与接口的概念,验证代码,能写小程序。
试验八:把握利用JAVA完成数据库课程中的基本数据记录操作。
二、试验内容
试验六内容:
调试,验证,课件ppt内容,课后布置的作业(试验报告内容中可不写)。
试验七内容:
完成教材12章关于抽象类与接口方面的范例内容的代码验证、后面作业的代码设计(试验报告中可不写)。
试验八内容:(二选一,提交该部分试验报告内容)
1)利用图形界面编程,实现C/S模式的数据库拜访操作。完成SQLSERVER或
MYSQL数据库管理系统的安装,配置,JAVA数据库拜访环境的配置;完成
数据库表的建立,记录插入等;建立用户表,包含用户名、密码字段;利用
JAVA实现图形界面,用户登录验证,进入软件运行后,针对某表记录的增、
删、改、查操作。
2)完成JAVAWEB应用开发,实现B/S模式的数据库拜访操作。完成SQLSERVER
或MYSQL数据库管理系统的安装,配置,JAVA数据库拜访环境的配置,
Tomcat服务器安装配置;完成数据库表的建立,记录插入等;建立用户表,
包含用户名、密码字段;利用JAVA实现WEB应用,通过扫瞄器拜访WEB举行
用户登录验证,进入WEB应用运行后,针对某表记录的增、删、改、查操作。
三、使用仪器、材料
JAVASEJDK1.7.55
Tomcat
Sqlserver
四、试验过程原始记录(数据、图表、计算等):
以下是我所衔接的数据库表结构,Book表是存储图书信息的,Reader表是存储读者信息的,Borrow表是存储借阅记录的,User表是存储用户登录取户名和密码的。
为了不裸露表结构和只显示用户需要的信息,建立了一个视图record
下面是用java衔接数据库的过程:
首先下载java衔接sql数据库的驱动程序,配置环境。
下面是囫囵程序演示过程截图:
1.登录界面
首先是登录界面
用户名或密码错误弹出登录失败消息框
2.初始界面
正确后进入初始界面,从视图中读取的数据库信息
3.增强功能
点击增强按钮弹出增强记录对话框
输入增强记录的信息后点击确定,再回到初始界面点击刷新按钮,可以看到刚增强的记录已经显示在初始界面中。
4.修改功能
点击修改按钮,弹出修改记录对话框
按照输入的读者编号和图书编号确定修改的是哪条记录,填入修改的信息后点击确定,回到初始界面点击刷新,可以看到修改的记录已修改掉
5.查询功能
点击查询按钮弹出搜寻记录对话框
输入姓名点击确定就会在下面显示此姓名的相关记录
输入书名也可以查询此书相关的记录
6.删除功能,可以单行删除也可以多行删除
首先单行删除,选中一行后点击删除按钮就可以删除此条记录,而且数据库也相应地删除了此条记录,通过点击刷新再重新读取数据库数据可以证实
删除前
删除后
多行删除,选中多行后点击删除删除前
删除后
点击刷新后
以上就是囫囵程序演示过程
碰到的问题:
1.借书日期和还书日期以date类型显示到界面中总会少两天,不知道为什么,所以我把date
类型改为了char类型,然后就正常了。
2.开头写删除多行的时候,我是写的删除数据库的信息并一起删掉JTable中的信息,但是因为
在删除JTable中信息时最开头得到的序号和删除一行后序号削减了,于是会浮现越界的错误,于是我改为了删除数据库信息后再调用读取数据库信息的函数举行了刷新就没问题了。
下面是衔接数据库并举行相关操作的源代码
importjava.sql.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.table.*;
importjava.util.*;
//登录界面的类,也是初始类
publicclassConnectionDatabaseextendsJFrameimplementsActionListener{privateConnectioncon=null;//衔接数据库
privateStatementstmt=null;//执行数据库sql语句
privateResultSetrs=null;//存储数据库查询结果
intif_success=0;//推断是否登录胜利
//登录界面的设置
privateJLabelnamelabel=newJLabel("用户名");
privateJTextFieldname=newJTextField(10);
privateJLabelpasslabel=newJLabel("密码");
privateJTextFieldpwd=newJTextField(30);
privateJButtoncommit=newJButton("登录");
publicConnectionDatabase(){
JPanelp1=newJPanel();
p1.setLayout(newGridLayout(2,2,5,20));
p1.add(namelabel);
p1.add(name);
p1.add(passlabel);
p1.add(pwd);
JPanelp2=newJPanel();
p2.add(commit,BorderLayout.SOUTH);
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
setSize(300,200);
setTitle("登录界面");
commit.addActionListener(this);//为登录按钮增强监听器
}
//主函数,显示登录界面
publicstaticvoidmain(String[]args){
ConnectionDatabaselogin=newConnectionDatabase();
login.setLocationRelativeTo(null);
login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
login.setVisible(true);
}
//点击按钮登录后推断用户名和密码是否正确,是否允许登录进去
publicvoidactionPerformed(ActionEvente){
try{
Stringsname=name.getText();
Stringspwd=pwd.getText();
//衔接数据库
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("胜利加载SQL驱动程序");
}
catch(Exceptionexw){
System.out.println("找不到SQL驱动程序");
}
try{
con=DriverManager.getConnection
("jdbc:sqlserver://localhost:1433;DatabaseName=Library","sa","xyz123456");
System.out.println("数据库衔接胜利");
}
catch(Exceptionexy){
System.out.println("数据库衔接失败");
}
//执行sql语句,查询出用户名和密码
stmt=con.createStatement();
rs=stmt.executeQuery("selectname,passwordfrom[User]");
//推断用户名和密码是否正确
while(rs.next()){
if(sname.equals(rs.getString("name"))&&
spwd.equals(rs.getString("password")))
if_success=1;
}
rs.close();
if(if_success==1){//正确则进入初始界面
readFrameframe=newreadFrame();
frame.setVisible(true);
}
else{
JOptionPane.showMessageDialog(null,"登录失败!");
}
}catch(SQLExceptionex){
ex.printStackTrace();
}
}
}
//从数据库中读入视图中的记录初始界面
classreadFrameextendsJFrame{
privatestaticConnectioncon=null;
privatestaticStatementstmt=null;
privatestaticResultSetrs=null;
//界面设置
privateJButtonsearch=newJButton("查询");
privateJButtonadding=newJButton("增强");
privateJButtondelete=newJButton("删除");
privateJButtonmodify=newJButton("修改");
privateJButtonfresh=newJButton("刷新");
privatestaticJTabletable=newJTable();//JTable用于显示记录
privatestaticDefaultTableModeltmhavesold=newDefaultTableModel();//建立默认的JTable模型
publicreadFrame(){
setTitle("图书借还记录");
setSize(600,500);
JPanelp1=newJPanel();//创建面板p1放置四个按钮.
p1.setLayout(newGridLayout(1,5));
p1.add(adding);
p1.add(delete);
p1.add(modify);
p1.add(search);
p1.add(fresh);
add(p1,BorderLayout.NORTH);
JScrollPanep2=newJScrollPane
(table,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
this.getContentPane().add(p2,BorderLayout.CENTER);
//点击查询按钮显示查询对话框
search.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente1){
JFramequeryFrame=newsearchFrame();
queryFrame.setVisible(true);
}
});
//点击增强按钮显示增强对话框
adding.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente2){
JFrameaddingFrame=newaddFrame();
addingFrame.setVisible(true);
}
});
//点击刷新按钮从数据库中重新读入数据
fresh.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente3){
read();//从数据库视图中读入数据
}
});
//点击修改按钮弹出修改记录对话框
modify.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente4){
JFramemyframe=newmodifyFrame();
myframe.setVisible(true);
}
});
//点击删除按钮后的操作
delete.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente5){
intselectRows=table.getSelectedRows().length;//取得用户所选行的行数
DefaultTableModeltableModel=(DefaultTableModel)table.getModel();//得到jtable中的数据
try{
ConnectData();//衔接数据库
stmt=con.createStatement();
if(selectRows==1){//假如选中单行
intselectedRowIndex=table.getSelectedRow();//取得用户所选单行
//得到选中行的Rno和Bno值
StringcellValue1=(String)tableModel.getValueAt(selectedRowIndex,0);
StringcellValue2=(String)tableModel.getValueAt(selectedRowIndex,1);
stmt.execute("deletefromBorrowwhereRno='"+cellValue1+"'and
Bno='"+cellValue2+"'");//按照Rno和Bno的值删除数据库表Borrow中此行记录
tableModel.removeRow(selectedRowIndex);//从JTable中删除此行}
elseif(selectRows>1){//选中多行
int[]selRowIndexs=table.getSelectedRows();//得到多行的行号
for(inti=0;icolumnName=newVector();//字段名
Vector>dataVector=newVector>();//存储rs中从数据库中查出的数据
columnName.add("读者编号");
columnName.add("图书编号");
columnName.add("姓名");
columnName.add("书名");
columnName.add("借书日期");
columnName.add("还书日期");
while(rs.next()){//把rs中的数据赋给dataVector
Vectorvec=newVector();
for(inti=1;icolumnName=newVector();//字段名
Vector>dataVector=newVector>();
columnName.add("读者编号");
columnName.add("图书编号");
columnName.add("姓名");
columnName.add("书名");
columnName.add("借书日期");
columnName.add("还书日期");
while(rs.next()){
Vectorvec=newVector();
for(inti=1;i<=6;i++){
vec.add(rs.getObject(i));
}
dataVector.add(vec);
}
model.setDataVector(dataVector,columnName);//设定模型数据和字段
con.close();
stmt.close();
rs.close();
}catch(SQLExceptionex){
ex.printStackTrace();
}
stable.setModel(model);
}
}
//增强功能类
classaddFrameextendsJFrameimplementsActionListener{privateConnectioncon=null;
privateStatementstmt=null;
//界面设计
privateJLabelborrowlabel=newJLabel("借阅日期");
privateJTextFieldborrow=newJTextField(10);
privateJLabelreturnlabel=newJLabel("归还日期");
privateJTextFieldreback=newJTextField(10);
privateJButtoncommit=newJButton("确定");
privateJLabelrnolabel=newJLabel("读者编号");
privateJTextFieldrno=newJTextField(5);
privateJLabelbnolabel=newJLabel("书编号");
privateJTextFieldbno=newJTextField(5);
publicaddFrame(){
JPanelp1=newJPanel();
p1.setLayout(newGridLayout(4,2));
p1.add(rnolabel);
p1.add(rno);
p1.add(bnolabel);
p1.add(bno);
p1.add(borrowlabel);
p1.add(borrow);
p1.add(returnlabel);
p1.add(reback);
JPanelp2=newJPanel();
p2.add(commit);
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
setSize(300,200);
setTitle("增强记录");
commit.addActionListener(this);//为确定按钮增强监听器
}
//点击确定按钮后的相关操作
publicvoidactionPerformed(ActionEvente){
try{
Stringrnovalue=rno.getText();
Stringbnovalue=bno.getText();
Stringborrowvalue=borrow.getText();
Stringreturnvalue=reback.getText();
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("胜利加载SQL驱动程序");
}
catch(Exceptionexw){
System.out.println("找不到SQL驱动程序");
}
try{
con=DriverManager.getConnection
("jdbc:sqlserver://localhost:1433;DatabaseName=Library","sa","xyz123456");
System.out.println("数据库衔接胜利");
}
catch(Exceptionexy){
System.out.println("数据库衔接失败");
}
stmt=con.createStatement();
stmt.executeUpdate("insertintoBorrowvalues('"+rnovalue+"','"+bnovalue+"','"+borrowvalue
+"','"+returnvalue+"')");//执行增强的sql语句
con.close();
stmt.close();
}catch(SQLExceptionex){
ex.printStackTrace();
}
}
}
//修改功能的类
classmodifyFrameextendsJFrameimplementsActionListener{privateConnectioncon=null;
privateStatementstmt=null;
//界面设计
privateJLabelfindlabel=newJLabel("按照输入的读者编号和书籍编号确定修改记录的位置");
privateJLabelborrowlabel=newJLabel("借阅日期");
privateJTextFieldborrow=newJTextField(10);
privateJLabelreturnlabel=newJLabel("归还日期");
privateJTextFieldreback=newJTextField(10);
privateJButtoncommit=newJButton("确定");
privateJLabelrnolabel=newJLabel("读者编号");
privateJTextFieldrno=newJTextField(5);
privateJLabelbnolabel=newJLabel("书编号");
privateJTextFieldbno=newJTextField(5);
publicmodifyFrame(){
JPanelp1=newJPanel();
p1.setLayout(newGridLayout(4,2));
p1.add(rnolabel);
p1.add(rno);
p1.add(bnolabel);
p1.add(bno);
p1.add(borrowlabel);
p1.add(borrow);
p1.add(returnlabel);
p1.add(reback);
JPanelp2=newJPanel();
p2.add(commit);
JPanelp3=newJPanel();
p3.add(findlabel);
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
add(p3,BorderLayout.SOUTH)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出口宠物食品合同范本
- 仓库租赁 配送合同范本
- 主力商家合同范本
- 2025年超大型特厚板轧机项目建议书
- 第六课 友谊之树常青 教学设计-2024-2025学年统编版道德与法治七年级上册
- 包装买卖合同范本
- 北京合伙合同范本咨询
- 《认识面积》(教学设计)-2023-2024学年三年级下册数学人教版
- 信用担保借款合同范本你
- 制造珠宝生产订单合同范本
- GB/T 15934-2008电器附件电线组件和互连电线组件
- GB/T 13277.4-2015压缩空气第4部分:固体颗粒测量方法
- 人教版八年级下册历史全册教案完整版教学设计含教学反思
- 提高白云石配比对烧结生产的影响
- 《城市轨道交通应急处理》课件-《城市轨道交通应急处理》项目一
- 公安基础知识考试题库(含各题型)
- 2023年云上贵州大数据(集团)有限公司招聘笔试题库及答案解析
- 选矿试车方案
- 自来水用水证明
- 小课题专题研究参考题目
- 《最好的未来》合唱曲谱
评论
0/150
提交评论