标签:选择 package 显示 连接错误 st3 pre grid 入参 sql























[JTable_Test3.java]源码
/** * 完成一个mini版本的学生管理系统(MODEL2-2模式) * 1、查询任务 * 2、添加功能 */package com.student3; import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Vector;import javax.swing.*;import javax.swing.table.AbstractTableModel; public class JTable_Test3 extends JFrame implements ActionListener{    //定义组件    JPanel jp1,jp2;    JLabel jl1;    JButton jb1,jb2,jb3,jb4;    JTable jt;    JScrollPane jsp;    JTextField jtf;    StuModel sm;       public static void main(String[] args) {        try {            // 将当前窗体外观设置为所在操作系统的外观            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (InstantiationException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (UnsupportedLookAndFeelException e) {            e.printStackTrace();        }        new JTable_Test3();    }       //构造函数    public JTable_Test3(){        jp1=new JPanel();        jtf=new JTextField(10);        jb1=new JButton("查询");        jb1.addActionListener(this);        jl1=new JLabel("请输入名字");               //把各个空间加入列        jp1.add(jl1);        jp1.add(jtf);        jp1.add(jb1);               jp2=new JPanel();        jb2=new JButton("添加");        jb2.addActionListener(this);        jb3=new JButton("修改");        jb3.addActionListener(this);        jb4=new JButton("删除");        jb4.addActionListener(this);        //把各个按钮加入到jp2中        jp2.add(jb2);        jp2.add(jb3);        jp2.add(jb4);               //创建一个数据模型对象        sm=new StuModel();        String []paras={"1"};        sm.queryStu("select * from stu where 1=?", paras);               //初始化JTable        jt=new JTable(sm);               //初始化jsp JScrollPane        jsp=new JScrollPane(jt);               //把jsp放入到jframe        this.add(jsp);        this.add(jp1,"North");        this.add(jp2,"South");               this.setSize(400, 300);        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        this.setVisible(true);    }     @Override    public void actionPerformed(ActionEvent e) {        if(e.getSource()==jb1){            //因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询            String name=this.jtf.getText();            //写一个SQL语句            String sql="select * from stu where stuName=?";            String []paras={name};            //构建新的数据模型类,并更新            sm=new StuModel();            sm.queryStu(sql, paras);            //更新JTable            jt.setModel(sm);        }        //用户点击添加时        else if(e.getSource()==jb2){            StuAddDialog sa=new StuAddDialog(this, "添加学生", true);            //重新再获得新的数据模型            //构建新的数据模型类,并更新            sm=new StuModel();            String []paras2={"1"};            sm.queryStu("select * from stu where 1=?", paras2);            //更新JTable            jt.setModel(sm);        }        //用户修改数据        else if(e.getSource()==jb3){            int rowNum=this.jt.getSelectedRow();            if(rowNum==-1){                //提示                JOptionPane.showMessageDialog(this, "请选择一行", "提示", JOptionPane.INFORMATION_MESSAGE);                return;            }                       //显示修改对话框            new StuUpdDialog(this,"修改学生信息",true,sm,rowNum);                       //更新数据模型            sm=new StuModel();            String []paras2={"1"};            sm.queryStu("select * from stu where 1=?", paras2);            //更新JTable            jt.setModel(sm);        }               //用户点击删除时,删除一条选中的数据        else if(e.getSource()==jb4){            //1、得到学生的ID号            //getSelectedRow会返回用户点中的行            //如果该用户一行都没有选择,就会返回-1            int rowNum=this.jt.getSelectedRow();            if(rowNum==-1){                //提示                JOptionPane.showMessageDialog(this, "请选择一行", "提示", JOptionPane.INFORMATION_MESSAGE);                return;            }            //得到学生编号            String stuId=(String)sm.getValueAt(rowNum, 0);            //创建一个sql语句            String sql="delete from stu where stuid=?";            String []paras={stuId};            StuModel temp=new StuModel();            if(temp.updStu(sql, paras)){                JOptionPane.showMessageDialog(this,"删除数据成功","删除数据提示",JOptionPane.INFORMATION_MESSAGE);            }else{                JOptionPane.showMessageDialog(this,"删除数据失败","删除数据提示",JOptionPane.ERROR_MESSAGE);            }                       //更新数据模型            sm=new StuModel();            String []paras2={"1"};            sm.queryStu("select * from stu where 1=?", paras2);            //更新JTable            jt.setModel(sm);        }    }} *******************************************************************************
[StuModel.java]源码
/** * 这是一个stu表的模型 * 可以把对student表的各种操作封装到该模型中 */package com.student3; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Vector;import javax.swing.JOptionPane;import javax.swing.table.AbstractTableModel; public class StuModel extends AbstractTableModel{    //rowData用来存放行数据、columnNames存放列名    Vector rowData,columnNames;       //添加学生(增、删、改)    public boolean updStu(String sql,String []paras){        //创建SqlHelper(如果程序并发性不考虑,可以把SqlHelper做成static)        SqlHelper sqlHelper=new SqlHelper();        return sqlHelper.updExecute(sql, paras);    }       //查询的本质就是用来初始化    public void queryStu(String sql,String []paras){        SqlHelper sqlHelper=null;        //中间        columnNames=new Vector<>();        //设置列名        columnNames.add("学号");        columnNames.add("名字");        columnNames.add("性别");        columnNames.add("年龄");        columnNames.add("籍贯");        columnNames.add("系别");               rowData=new Vector<>();        //rowData可以存放多行        try {            sqlHelper=new SqlHelper();            ResultSet rs=sqlHelper.queryExectue(sql, paras);                       while(rs.next()){                Vector hang=new Vector();                hang.add(rs.getString(1));                hang.add(rs.getString(2));                hang.add(rs.getString(3));                hang.add(rs.getInt(4));                hang.add(rs.getString(5));                hang.add(rs.getString(6));                //加入rowData                rowData.add(hang);            }        } catch (Exception e) {            e.printStackTrace();        }finally{            sqlHelper.close();        }    }       //得到共有多少列    public int getColumnCount() {        return this.columnNames.size();    }       @Override    public String getColumnName(int column) {        return (String)this.columnNames.get(column);    }     //得到共有多少行    public int getRowCount() {        return this.rowData.size();    }     //得到某行某列的数据    public Object getValueAt(int rowIndex, int columnIndex) {        return ((Vector)this.rowData.get(rowIndex)).get(columnIndex);    }} *******************************************************************************
[SqlHelper.java]源码
/** * 这是一个对数据库进行操作的类(SqlHelper) */package com.student3; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.JOptionPane; public class SqlHelper {    //定义操作数据库需要的组件    PreparedStatement ps=null;    Connection ct=null;    ResultSet rs=null;     String sqlDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";    String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=stussystem;user=sa;password=sa;";       public SqlHelper(){        try {            //1、加载驱动            Class.forName(sqlDriver);            //2、得到连接            ct=DriverManager.getConnection(url);        } catch (Exception e) {            e.printStackTrace();        }    }       //关闭数据库资源    public void close(){        try {            if(rs!=null){                rs.close();            }            if(ps!=null){                ps.close();            }            if(ct!=null){                ct.close();            }        } catch (SQLException e1) {            e1.printStackTrace();        }    }       //写一个不需要注入的方法(由于数据量少,所以写了一个这个方法。一般都带有条件的注入)    public ResultSet queryExectue(String sql){        try {            //3、创建ps            ps=ct.prepareStatement(sql);            rs=ps.executeQuery();        } catch (Exception e) {            e.printStackTrace();        }finally{            //关闭资源???        }        return rs;    }       //对数据库的查询操作    public ResultSet queryExectue(String sql,String []paras){        try {            //3、创建ps            ps=ct.prepareStatement(sql);            //给ps的问号赋值            for(int i=0;i<paras.length;i++){                ps.setString(i+1, paras[i]);            }                       rs=ps.executeQuery();        } catch (Exception e) {            e.printStackTrace();        }finally{            //关闭资源???        }        return rs;    }       //把对数据库的增、删、改合在一起    public boolean updExecute(String sql,String []paras){        boolean b=true;        try {            //3、创建ps            ps=ct.prepareStatement(sql);            //给ps的问号赋值            for(int i=0;i<paras.length;i++){                ps.setString(i+1, paras[i]);            }                       //4、执行操作            if(ps.executeUpdate()!=1){                b=false;            }        } catch (Exception e) {            b=false;            JOptionPane.showMessageDialog(null, "数据源错误或数据库用户名、密码错误", "数据库连接错误提示", JOptionPane.ERROR_MESSAGE);            e.printStackTrace();        }finally{            this.close();        }        return b;    }}*******************************************************************************
[StuAddDialog.java]源码
package com.student3; import java.awt.BorderLayout;import java.awt.Frame;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField; public class StuAddDialog extends JDialog implements ActionListener{    //定义我需要的swing组件    JLabel jl1,jl2,jl3,jl4,jl5,jl6;    JButton jb1,jb2;    JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;    JPanel jp1,jp2,jp3;       //owner它的父窗口;title窗口名;model指定是模态窗口,还是非模态    public StuAddDialog(Frame owner,String title,boolean modal){        super(owner,title,modal);//调用父类构造方法,达到模式对话框效果        jl1=new JLabel("学号");        jl2=new JLabel("名字");        jl3=new JLabel("性别");        jl4=new JLabel("年龄");        jl5=new JLabel("籍贯");        jl6=new JLabel("系别");               jtf1=new JTextField();        jtf2=new JTextField();        jtf3=new JTextField();        jtf4=new JTextField();        jtf5=new JTextField();        jtf6=new JTextField();               jb1=new JButton("添加");        jb2=new JButton("取消");               jp1=new JPanel();        jp2=new JPanel();        jp3=new JPanel();               //设置布局        jp1.setLayout(new GridLayout(6,1));        jp2.setLayout(new GridLayout(6,1));               //添加组件        jp1.add(jl1);        jp1.add(jl2);        jp1.add(jl3);        jp1.add(jl4);        jp1.add(jl5);        jp1.add(jl6);               jp2.add(jtf1);        jp2.add(jtf2);        jp2.add(jtf3);        jp2.add(jtf4);        jp2.add(jtf5);        jp2.add(jtf6);               jp3.add(jb1);        jp3.add(jb2);               this.add(jp1,BorderLayout.WEST);        this.add(jp2,BorderLayout.CENTER);        this.add(jp3,BorderLayout.SOUTH);        jb1.addActionListener(this);        jb2.addActionListener(this);               //展现        this.setSize(300, 250);        this.setVisible(true);    }     @Override    public void actionPerformed(ActionEvent e) {        //用户点击添加按钮后的响应动作        if(e.getSource()==jb1){            StuModel temp=new StuModel();            String sql="insert into stu values(?,?,?,?,?,?)";            String []paras={jtf1.getText(),jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText()};            if(!temp.updStu(sql, paras)){                JOptionPane.showMessageDialog(this, "添加数据失败", "添加数据提示", JOptionPane.ERROR_MESSAGE);            }else{                JOptionPane.showMessageDialog(this,"添加数据成功","添加数据提示",JOptionPane.INFORMATION_MESSAGE);            }            //关闭对话框            this.dispose();        }        else if(e.getSource()==jb2){            this.dispose();        }    }}*******************************************************************************
[StuUpdDialog.java]源码
/** * 修改学生信息 */package com.student3; import java.awt.BorderLayout;import java.awt.Frame;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField; public class StuUpdDialog extends JDialog implements ActionListener{    //定义我需要的swing组件    JLabel jl1,jl2,jl3,jl4,jl5,jl6;    JButton jb1,jb2;    JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;    JPanel jp1,jp2,jp3;       //owner它的父窗口;title窗口名;model指定是模态窗口,还是非模态    public StuUpdDialog(Frame owner,String title,boolean modal,StuModel sm,int rowNum){        super(owner,title,modal);//调用父类构造方法,达到模式对话框效果        jl1=new JLabel("学号");        jl2=new JLabel("名字");        jl3=new JLabel("性别");        jl4=new JLabel("年龄");        jl5=new JLabel("籍贯");        jl6=new JLabel("系别");               jtf1=new JTextField();        //初始化数据        jtf1.setText((String)sm.getValueAt(rowNum, 0));        //让jtf1不能修改        jtf1.setEditable(false);        jtf2=new JTextField();        jtf2.setText((String)sm.getValueAt(rowNum, 1));        jtf3=new JTextField();        jtf3.setText((String)sm.getValueAt(rowNum, 2));        jtf4=new JTextField();        jtf4.setText(sm.getValueAt(rowNum, 3).toString());        jtf5=new JTextField();        jtf5.setText((String)sm.getValueAt(rowNum, 4));        jtf6=new JTextField();        jtf6.setText((String)sm.getValueAt(rowNum, 5));               jb1=new JButton("修改");        jb2=new JButton("取消");               jp1=new JPanel();        jp2=new JPanel();        jp3=new JPanel();               //设置布局        jp1.setLayout(new GridLayout(6,1));        jp2.setLayout(new GridLayout(6,1));               //添加组件        jp1.add(jl1);        jp1.add(jl2);        jp1.add(jl3);        jp1.add(jl4);        jp1.add(jl5);        jp1.add(jl6);               jp2.add(jtf1);        jp2.add(jtf2);        jp2.add(jtf3);        jp2.add(jtf4);        jp2.add(jtf5);        jp2.add(jtf6);               jp3.add(jb1);        jp3.add(jb2);               this.add(jp1,BorderLayout.WEST);        this.add(jp2,BorderLayout.CENTER);        this.add(jp3,BorderLayout.SOUTH);               jb1.addActionListener(this);        jb2.addActionListener(this);               //展现        this.setSize(300, 250);        this.setVisible(true);    }     @Override    public void actionPerformed(ActionEvent e) {        //用户点击添加按钮后的响应动作        if(e.getSource()==jb1){            //做一个sql语句            String sql="update stu set stuName=?,stuSex=?,stuAge=?,stuJg=?,stuDept=? where stuId=?";            String []paras={jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText(),jtf1.getText()};            StuModel temp=new StuModel();            if(temp.updStu(sql, paras)){                JOptionPane.showMessageDialog(this,"修改数据成功","修改数据提示",JOptionPane.INFORMATION_MESSAGE);            }else{                JOptionPane.showMessageDialog(this,"修改数据失败","修改数据提示",JOptionPane.ERROR_MESSAGE);            }            this.dispose();        }        else if(e.getSource()==jb2){            this.dispose();        }    }}JAVA入门到精通-第73讲-学生管理系统5-dao.sqlhelper
标签:选择 package 显示 连接错误 st3 pre grid 入参 sql
原文地址:https://www.cnblogs.com/xuxaut-558/p/10045826.html