java连接数据库课程设计.doc

上传人:xin****828 文档编号:6633036 上传时间:2020-03-01 格式:DOC 页数:21 大小:506.50KB
返回 下载 相关 举报
java连接数据库课程设计.doc_第1页
第1页 / 共21页
java连接数据库课程设计.doc_第2页
第2页 / 共21页
java连接数据库课程设计.doc_第3页
第3页 / 共21页
点击查看更多>>
资源描述
*大 学学 生 实 验 报 告实验课程名称 J2EE及JAVA程序设计 开课实验室 DS1501 学 院 软件学院 年级 2012 专业班 2班 学 生 姓 名 学 号 开 课 时 间 2013 至 2014 学年第 2 学期总 成 绩教师签名软件学院制J2EE及JAVA程序设计实验报告 开课实验室:DS1501 2015 年 6 月18日学院软件学院软工2班姓名成绩课程名称J2EE及JAVA程序设计实验项目名 称实验6-8: 图形界面编程、抽象类与接口、数据库。指导教师教师评语教师签名:2014年 月 日一、 实验目的实验六:基本掌握使用JAVA来完成基本的图形界面等调试与编程,实现理论课上讲述的内容PPT内容的验证。实验七:掌握抽象类与接口的概念,验证代码,能写小程序。实验八:掌握利用JAVA完成数据库课程中的基本数据记录操作。二、实验内容实验六内容:调试,验证,课件ppt内容,课后布置的作业(实验报告内容中可不写)。实验七内容:完成教材12章关于抽象类与接口方面的范例内容的代码验证、后面作业的代码设计(实验报告中可不写)。实验八内容:(二选一,提交该部分实验报告内容)1) 利用图形界面编程,实现C/S模式的数据库访问操作。完成SQL SERVER或MYSQL数据库管理系统的安装,配置,JAVA数据库访问环境的配置;完成数据库表的建立,记录插入等;建立用户表,包含用户名、密码字段;利用JAVA实现图形界面,用户登录验证,进入软件运行后,针对某表记录的增、删、改、查操作。2) 完成JAVA WEB应用开发,实现B/S模式的数据库访问操作。完成SQL SERVER或MYSQL数据库管理系统的安装,配置,JAVA数据库访问环境的配置,Tomcat服务器安装配置;完成数据库表的建立,记录插入等;建立用户表,包含用户名、密码字段;利用JAVA实现WEB应用,通过浏览器访问WEB进行用户登录验证,进入WEB应用运行后,针对某表记录的增、删、改、查操作。三、使用仪器、材料JAVA SE JDK 1.7.55TomcatSql server四、实验过程原始记录(数据、图表、计算等):以下是我所连接的数据库表结构,Book表是存储图书信息的,Reader表是存储读者信息的,Borrow表是存储借阅记录的,User表是存储用户登录用户名和密码的。为了不暴露表结构和只显示用户需要的信息,建立了一个视图record下面是用java连接数据库的过程:首先下载java连接sql数据库的驱动程序,配置环境。下面是整个程序演示过程截图:1.登录界面首先是登录界面用户名或密码错误弹出登录失败消息框2.初始界面正确后进入初始界面,从视图中读取的数据库信息3.增加功能点击增加按钮弹出增加记录对话框输入增加记录的信息后点击确定,再回到初始界面点击刷新按钮,可以看到刚增加的记录已经显示在初始界面中。4.修改功能点击修改按钮,弹出修改记录对话框根据输入的读者编号和图书编号确定修改的是哪条记录,填入修改的信息后点击确定,回到初始界面点击刷新,可以看到修改的记录已修改掉5.查询功能点击查询按钮弹出搜索记录对话框输入姓名点击确定就会在下面显示此姓名的相关记录输入书名也可以查询此书相关的记录6.删除功能,可以单行删除也可以多行删除首先单行删除,选中一行后点击删除按钮就可以删除此条记录,而且数据库也相应地删除了此条记录,通过点击刷新再重新读取数据库数据可以证明删除前删除后多行删除,选中多行后点击删除删除前删除后点击刷新后以上就是整个程序演示过程遇到的问题:1. 借书日期和还书日期以date类型显示到界面中总会少两天,不知道为什么,所以我把date类型改为了char类型,然后就正常了。2. 开始写删除多行的时候,我是写的删除数据库的信息并一起删掉JTable中的信息,但是由于在删除JTable中信息时最开始得到的序号和删除一行后序号减少了,于是会出现越界的错误,于是我改为了删除数据库信息后再调用读取数据库信息的函数进行了刷新就没问题了。下面是连接数据库并进行相关操作的源代码import java.sql.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;import java.util.*;/登录界面的类,也是初始类public class ConnectionDatabase extends JFrame implements ActionListenerprivate Connection con=null;/连接数据库private Statement stmt=null;/执行数据库sql语句private ResultSet rs=null;/存储数据库查询结果int if_success = 0;/判断是否登录成功/登录界面的设置private JLabel namelabel = new JLabel(用户名);private JTextField name = new JTextField(10);private JLabel passlabel = new JLabel(密码);private JTextField pwd = new JTextField(30);private JButton commit = new JButton(登录);public ConnectionDatabase()JPanel p1=new JPanel();p1.setLayout(new GridLayout(2,2,5,20);p1.add(namelabel);p1.add(name);p1.add(passlabel);p1.add(pwd);JPanel p2=new JPanel();p2.add(commit,BorderLayout.SOUTH);add(p1,BorderLayout.NORTH);add(p2,BorderLayout.CENTER);setSize(300,200);setTitle(登录界面);commit.addActionListener(this);/为登录按钮增加监听器/主函数,显示登录界面public static void main(String args)ConnectionDatabase login = new ConnectionDatabase();login.setLocationRelativeTo(null);login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);login.setVisible(true); /点击按钮登录后判断用户名和密码是否正确,是否允许登录进去public void actionPerformed(ActionEvent e)tryString sname=name.getText();String spwd=pwd.getText();/连接数据库try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);System.out.println(成功加载SQL驱动程序);catch(Exception exw)System.out.println(找不到SQL驱动程序);trycon = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;DatabaseName=Library,sa,xyz123456);System.out.println(数据库连接成功);catch(Exception exy)System.out.println(数据库连接失败); /执行sql语句,查询出用户名和密码 stmt = con.createStatement();rs=stmt.executeQuery(select name,password from User);/判断用户名和密码是否正确while(rs.next()if(sname.equals(rs.getString(name) & spwd.equals(rs.getString(password)if_success = 1; rs.close();if(if_success=1)/正确则进入初始界面readFrame frame = new readFrame();frame.setVisible(true);elseJOptionPane.showMessageDialog(null,登录失败!); catch(SQLException ex)ex.printStackTrace();/从数据库中读入视图中的记录初始界面class readFrame extends JFrameprivate static Connection con = null;private static Statement stmt = null;private static ResultSet rs = null;/界面设置private JButton search = new JButton(查询);private JButton adding = new JButton(增加);private JButton delete = new JButton(删除);private JButton modify = new JButton(修改);private JButton fresh = new JButton(刷新);private static JTable table=new JTable();/JTable用于显示记录private static DefaultTableModel tmhavesold = new DefaultTableModel();/建立默认的JTable模型 public readFrame()setTitle(图书借还记录);setSize(600,500);JPanel p1 = new JPanel();/创建面板p1放置四个按钮.p1.setLayout(new GridLayout(1,5);p1.add(adding);p1.add(delete);p1.add(modify);p1.add(search);p1.add(fresh);add(p1,BorderLayout.NORTH);JScrollPane p2=new JScrollPane(table,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);this.getContentPane().add(p2,BorderLayout.CENTER);/点击查询按钮显示查询对话框search.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e1)JFrame queryFrame = new searchFrame();queryFrame.setVisible(true););/点击增加按钮显示增加对话框adding.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e2)JFrame addingFrame = new addFrame();addingFrame.setVisible(true););/点击刷新按钮从数据库中重新读入数据fresh.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e3)read();/从数据库视图中读入数据);/点击修改按钮弹出修改记录对话框modify.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e4)JFrame myframe = new modifyFrame();myframe.setVisible(true););/点击删除按钮后的操作delete.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e5)int selectRows=table.getSelectedRows().length;/ 取得用户所选行的行数DefaultTableModel tableModel = (DefaultTableModel) table.getModel();/得到jtable中的数据try ConnectData();/连接数据库stmt = con.createStatement();if(selectRows=1)/如果选中单行int selectedRowIndex = table.getSelectedRow(); / 取得用户所选单行 /得到选中行的Rno和Bno值 String cellValue1=(String) tableModel.getValueAt(selectedRowIndex, 0);String cellValue2=(String) tableModel.getValueAt(selectedRowIndex, 1); stmt.execute(delete from Borrow where Rno=+cellValue1+ and Bno=+cellValue2+);/根据Rno和Bno的值删除数据库表Borrow中此行记录tableModel.removeRow(selectedRowIndex);/从JTable中删除此行else if(selectRows1)/选中多行int selRowIndexs=table.getSelectedRows();/得到多行的行号for(int i=0; iselRowIndexs.length; i+)/从数据库中删除这几行记录String cValue1=(String) tableModel.getValueAt(selRowIndexsi, 0);String cValue2=(String) tableModel.getValueAt(selRowIndexsi, 1); stmt.execute(delete from Borrow where Rno=+cValue1+ and Bno=+cValue2+);read();/从数据库中重新读入数据con.close();stmt.close(); catch(SQLException e)e.printStackTrace(););read();/连接数据库public static void ConnectData()try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);System.out.println(成功加载SQL驱动程序);catch(Exception e)System.out.println(找不到SQL驱动程序);trycon = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;DatabaseName=Library,sa,xyz123456);System.out.println(数据库连接成功);catch(Exception e)System.out.println(数据库连接失败); /从数据库中读入记录public static void read()try ConnectData();stmt = con.createStatement();rs=stmt.executeQuery(select *from record);Vector columnName = new Vector();/字段名VectorVector dataVector = new VectorVector();/存储rs中从数据库中查出的数据columnName.add(读者编号);columnName.add(图书编号); columnName.add(姓名);columnName.add(书名);columnName.add(借书日期);columnName.add(还书日期);while(rs.next()/把rs中的数据赋给dataVectorVector vec = new Vector();for(int i=1;i=6;i+)vec.add(rs.getObject(i);dataVector.add(vec);tmhavesold.setDataVector(dataVector, columnName);/设定模型数据和字段con.close();stmt.close();rs.close(); catch(SQLException e)e.printStackTrace();table.setModel(tmhavesold);/查询功能的类class searchFrame extends JFrame implements ActionListenerprivate Connection con=null;private Statement stmt=null;private ResultSet rs=null;/界面设计private JLabel namelabel = new JLabel(姓名);private JTextField name = new JTextField(5);private JLabel booklabel = new JLabel(书名);private JTextField book = new JTextField(10);private JButton commit = new JButton(确定);private JTable stable=new JTable();/一样用jtable显示查询出的结果private DefaultTableModel model = new DefaultTableModel();/建立默认的JTable模型public searchFrame()JPanel ps2=new JPanel();ps2.setLayout(new GridLayout(1,5);ps2.add(namelabel);ps2.add(name);ps2.add(booklabel);ps2.add(book);ps2.add(commit);JScrollPane ps3=new JScrollPane(stable,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);add(ps2,BorderLayout.NORTH);this.getContentPane().add(ps3,BorderLayout.CENTER);this.setSize(500,380);this.setTitle(搜索记录);commit.addActionListener(this);/为确定按钮增加监听器 /点击确定后查询并显示出,过程和read()函数基本一致public void actionPerformed(ActionEvent e)try String namevalue = name.getText();String bookvalue = book.getText();try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);System.out.println(成功加载SQL驱动程序);catch(Exception exw)System.out.println(找不到SQL驱动程序);trycon = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;DatabaseName=Library,sa,xyz123456);System.out.println(数据库连接成功);catch(Exception exy)System.out.println(数据库连接失败); stmt = con.createStatement();/根据姓名或书名查询记录rs=stmt.executeQuery(select *from record where Rname=+namevalue+ or Btitle=+bookvalue+);Vector columnName = new Vector();/字段名VectorVector dataVector = new VectorVector();columnName.add(读者编号);columnName.add(图书编号); columnName.add(姓名);columnName.add(书名);columnName.add(借书日期);columnName.add(还书日期);while(rs.next()Vector vec = new Vector();for(int i=1;i=6;i+)vec.add(rs.getObject(i);dataVector.add(vec);model.setDataVector(dataVector, columnName);/设定模型数据和字段con.close();stmt.close();rs.close(); catch(SQLException ex)ex.printStackTrace();stable.setModel(model);/增加功能类class addFrame extends JFrame implements ActionListener private Connection con=null;private Statement stmt=null;/界面设计private JLabel borrowlabel = new JLabel(借阅日期);private JTextField borrow = new JTextField(10);private JLabel returnlabel = new JLabel(归还日期);private JTextField reback = new JTextField(10);private JButton commit = new JButton(确定);private JLabel rnolabel = new JLabel(读者编号);private JTextField rno = new JTextField(5);private JLabel bnolabel = new JLabel(书编号);private JTextField bno = new JTextField(5);public addFrame()JPanel p1=new JPanel();p1.setLayout(new GridLayout(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);JPanel p2=new JPanel();p2.add(commit);add(p1,BorderLayout.NORTH);add(p2,BorderLayout.CENTER);setSize(300,200);setTitle(增加记录);commit.addActionListener(this);/为确定按钮增加监听器/点击确定按钮后的相关操作public void actionPerformed(ActionEvent e)try String rnovalue = rno.getText();String bnovalue = bno.getText();String borrowvalue = borrow.getText();String returnvalue = reback.getText();try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);System.out.println(成功加载SQL驱动程序);catch(Exception exw)System.out.println(找不到SQL驱动程序);trycon = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;DatabaseName=Library,sa,xyz123456);System.out.println(数据库连接成功);catch(Exception exy)System.out.println(数据库连接失败); stmt = con.createStatement();stmt.executeUpdate(insert into Borrow values(+rnovalue+,+bnovalue+,+borrowvalue+,+returnvalue+);/执行增加的sql语句con.close();stmt.close(); catch(SQLException ex)ex.printStackTrace();/修改功能的类class modifyFrame extends JFrame implements ActionListener private Connection con=null;private Statement stmt=null;/界面设计private JLabel findlabel = new JLabel(根据输入的读者编号和书籍编号确定修改记录的位置);private JLabel borrowlabel = new JLabel(借阅日期);private JTextField borrow = new JTextField(10);private JLabel returnlabel = new JLabel(归还日期);private JTextField reback = new JTextField(10);private JButton commit = new JButton(确定);private JLabel rnolabel = new JLabel(读者编号);private JTextField rno = new JTextField(5);private JLabel bnolabel = new JLabel(书编号);private JTextField bno = new JTextField(5);public modifyFrame()JPanel p1=new JPanel();p1.setLayout(new GridLayout(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);JPanel p2=new JPanel();p2.add(commit);JPanel p3=new JPanel();p3.add(findlabel);add(p1,BorderLayout.NORTH);add(p2,BorderLayout.CENTER);add(p3,BorderLayout.SOUTH);setSize(350,200);setTitle(修改记录);commit.addActionListener(this);/为确定按钮增加监听器/点击确定后确定修改,执行相关操作public void actionPerformed(ActionEvent e)try String rnovalue = rno.getText();String bnovalue = bno.getText();String borrowvalue = borrow.getText();String returnvalue = reback.getText();try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);System.out.println(成功加载SQL驱动程序);catch(Exception exw)System.out.println(找不到SQL驱动程序);trycon = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;DatabaseName=Library,sa,xyz123456);System.out.println(数据库连接成功);catch(Exception exy)System.out.println(数据库连接失败); stmt = con.createStatement();/根据读者编号和书的编号确定修改的记录stmt.executeUpdate(update Borrow set BorrowDate=+borrowvalue+ where Rno=+rnovalue+and Bno=+bnovalue+);/根据Rno和BNo修改此记录的借书日期stmt.executeUpdate(update Borrow set ReturnDate=+returnvalue+ where Rno=+rnovalue+and Bno=+bnovalue+);/根据Rno和BNo修改此记录的还书日期con.close();stmt.close(); catch(SQLException ex)ex.printStackTrace();
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!