您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > Java数据库(MySql)操作
学生管理系统需求文档1.功能说明(使用usecase图来说明uml)uml(统一建模语言,用图形化的语言来表述)有两款开发工具来做建模,uml------rational2003-----judeUml可以画的图Usecase图:用例图(可以清晰滴)时序图类图2.设计数据库学生表(student)字段名类型备注StuidVariant学生idStuNameNvarchar(50)学生名NotnullStuSexNchar(1)性别男或女,默认“男”stuJgNvarchar(20)籍贯stuAgeInt年龄0stuDeptNvarchar(20)系别3.设计界面(原型开发【先设计界面,后写代码】)Java连接数据库()Java连接MYSQL数据库的连接步骤以下的文章主要描述的是java连接MYSQL数据库的正确操作步骤,在此篇文章里我们主要是以实例列举的方式来引出其具体介绍。此文章主要向大家描述的是Java连接MYSQL数据库(以MySQL为例)的实际操作步骤,我们是以相关实例的方式来引出Java连接MYSQL数据库的实际操作流程,以下就是文章的主要内容描述。importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.util.Vector;importjavax.swing.JFrame;importjavax.swing.JScrollPane;importjavax.swing.JTable;Importcom.mysql.jdbc.Connection;importcom.mysql.jdbc.PreparedStatement;importcom.mysql.jdbc.Statement;@SuppressWarnings(serial)publicclassTest2extendsJFrame{//rowData,存放行数据//columnNames,存放列名@SuppressWarnings(unchecked)VectorrowData,columnNames;JTablejt=null;JScrollPanejsp=null;java.sql.Connectionct=null;//建立数据库连接Statementstatement=null;//用于执行不带参数的简单SQL语句PreparedStatementps=null;//执行SQL语句,带或不带in参数ResultSetrs=null;@SuppressWarnings(unchecked)publicTest2(){columnNames=newVector();columnNames.add(学号);columnNames.add(姓名);columnNames.add(性别);columnNames.add(年龄);columnNames.add(系别);rowData=newVector();try{Class.forName(com.mysql.jdbc.Driver);Connectionct=(Connection)DriverManager.getConnection(jdbc:mysql://localhost:3306/stumanage,root,root);PreparedStatementps=(PreparedStatement)ct.prepareStatement(select*fromstu);rs=ps.executeQuery();rowData=newVector();while(rs.next()){Vectorrow=newVector();row.add(rs.getString(1));row.add(rs.getString(2));row.add(rs.getString(3));row.add(rs.getString(4));row.add(rs.getString(5));row.add(rs.getString(6));rowData.add(row);}}catch(Exceptione){e.printStackTrace();}finally{try{if(rs!=null)rs.close();if(ps!=null)ps.close();}catch(Exceptione2){e2.printStackTrace();}}jt=newJTable(rowData,columnNames);jsp=newJScrollPane(jt);add(jsp);setSize(400,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);setVisible(true);}publicstaticvoidmain(String[]args){newTest2();}}在navicat8中要想在数据库中能输入中文,需要把每一个Text字段的字符集都设置为gbk在进行对数据库的增删改查操作时,表中的数据会发生变化,这时候如果直接查询的话,原来的数据还会存在表中,解决这个问题的方法是,把对数据库的操作放到一个单独的类里面,这个类有一个单独的名字TableModel在进行查询的时候,出现了一个问题,数值类型的可以查询,但是字符串类型的都不能查询,原因在于mysql数据库的字符编码上出现了问题,解决方案,吧mysql的配置文件的默认编码改成gbk,在数据库中新建表的时候,字符串字段的编码也设置为gbk,都统一之后,在查询的时候就可以查询中文了增删改查可以单独做,简称Model1模式,把对数据库的操作都放到一起,就是Model2模式进一步整合在这里,很清晰地分析出来数据库查询操作的步骤:最底层为SqlHelper,它提供对数据库最底层的操作,包括增删改查和关闭数据库的操作,这样做的好处是用户在对数据操作的时候,数据库全都是封闭的;中间一层是数据操作的接口,在这一层里的主要工作是把用户要做的操作通过SqlHelper来实现;最外层就是用户层,在这一层里,用户对数据操作,主界面:importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.JTextField;@SuppressWarnings(serial)publicclassStudentManageextendsJFrameimplementsActionListener{JLabeljl=newJLabel(请输入姓名:);JTextFieldjt=newJTextField(10);JButtonbt1=newJButton(查询);JButtonbt2,bt3,bt4;JTablejtab=null;JScrollPanejsp=null;stuModeldm;publicStudentManage(){JPaneljp1=newJPanel();jp1.add(jl);jp1.add(jt);jp1.add(bt1);JPaneljp2=newJPanel();dm=newstuModel();String[]paras={1};dm.Querystu(select*fromstuwhere1=?,paras);jtab=newJTable(dm);jsp=newJScrollPane(jtab);setSize(400,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);setTitle(简易学生管理系统);setVisible(true);add(jp1,BorderLayout.NORTH);add(jsp,BorderLayout.CENTER);bt2=newJButton(添加);bt3=newJButton(修改);bt4=newJButton(删除);bt1.addActionListener(this);bt2.addActionListener(this);bt3.addActionListener(this);bt4.addActionListener(this);jp2.add(bt2);jp2.add(bt3);jp2.add(bt4);add(jp2,BorderLayout.SOUTH);}publicstaticvoidmain(String[]args){newStudentManage();}@OverridepublicvoidactionPerformed(ActionEvente){if(e.getSource()==bt1){//查询操作Stringname=jt.getText().trim();Stringsql=select*fromstuwherestuName=?;String[]paras={name};dm=newstuModel();dm.Querystu(sql,paras);jtab.setModel(dm);}elseif(e.getSource()==bt2){//添加操作newStuAddDemo(this,添加窗体,true);dm=newstuModel();String[]paras={1};dm.Querystu(select*fromstuwhere1=?,paras);jtab.setModel(dm);}elseif(e.getSource()==bt3){//修改操作introwcount=jtab.getSelectedRow();//选中的行if(rowcount==-1){//没选中JOptionPane.showMessageDialog(null,请选中要修改的行);return;}newstuUpdateDemo(this,修改窗体,true,dm,rowcount);dm=newstuModel();String[]paras={1};dm.Querystu(select*fromstuwhere1=?,paras);jtab.setModel(dm);}elseif(e.getSource()==bt4){//删除操作introwcount=jtab.getSelectedRow();if(rowcount==-1){JOptionPane.showMessageDialog(null,请选中要删除的行);return;}Stringstuid=(String)dm.getValueAt(rowcount,0);Stringsql=deletefromstuwherestuid=?;String[]paras={stuid};if(!dm.updatestu(sql,paras))JOptionPane.showMessageDialog(null,删除失败);elseJOptionPane.showMessageDialog(null,删除成功);stuModeldm1=newstuModel();String[]paras1={1};dm1.Querystu(select*fromstuwhere1=?,paras1);jtab.setModel(dm1);}}}Model类:importjava.
本文标题:Java数据库(MySql)操作
链接地址:https://www.777doc.com/doc-5453911 .html