Browse Source

上传文件至 ''

1801010643 5 years ago
parent
commit
1889a2d579
4 changed files with 592 additions and 0 deletions
  1. 139 0
      StuAddDiag.java
  2. 129 0
      StuModel.java
  3. 146 0
      StuUpDiag.java
  4. 178 0
      Test3.java

+ 139 - 0
StuAddDiag.java

@@ -0,0 +1,139 @@
+package C;
+
+
+ import javax.swing.JDialog;
+ import javax.swing.*;
+ import java.awt.*;
+ import java.awt.event.ActionEvent;
+ import java.awt.event.ActionListener;
+ import java.sql.Statement;
+ import java.sql.Connection;
+ import java.sql.DriverManager;
+ import java.sql.ResultSet;
+ import java.sql.*;
+ 
+ public class StuAddDiag extends JDialog implements ActionListener {
+     //定义我需要的swing组件
+     JLabel jl1,jl2,jl3,jl4,jl5,jl6;
+     JTextField jf1,jf2,jf3,jf4,jf5,jf6;
+     JPanel jp1,jp2,jp3;
+     JButton jb1,jb2;
+     //owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
+     public StuAddDiag(Frame owner,String title, boolean modal){
+         //调用父类方法
+         super(owner,title,modal);
+         
+         jl1 = new JLabel("设备ID");
+         jl2 = new JLabel("设备名称");
+         jl3 = new JLabel("大小");    
+         jl4 = new JLabel("重量");
+         jl5 = new JLabel("供应商");
+         jl6 = new JLabel("价格");
+         
+         jf1 = new JTextField(10);
+         jf2 = new JTextField(10);
+         jf3 = new JTextField(10);
+         jf4 = new JTextField(10);
+         jf5 = new JTextField(10);
+         jf6 = new JTextField(10);
+         
+         jb1 = new JButton("添加");
+         jb1.addActionListener(this);
+         jb2 = new JButton("取消");
+
+         
+         jp1 = new JPanel();
+         jp2 = new JPanel();
+         jp3 = new JPanel();
+         
+         //设置布局
+         jp1.setLayout(new GridLayout(6,1));
+         jp2.setLayout(new GridLayout(6,1));
+         
+         jp3.add(jb1);
+         jp3.add(jb2);
+         
+         jp1.add(jl1);
+         jp1.add(jl2);
+         jp1.add(jl3);
+         jp1.add(jl4);
+         jp1.add(jl5);
+         jp1.add(jl6);
+         
+         jp2.add(jf1);
+         jp2.add(jf2);
+         jp2.add(jf3);
+         jp2.add(jf4);
+         jp2.add(jf5);
+         jp2.add(jf6);
+         
+         this.add(jp1, BorderLayout.WEST);
+         this.add(jp2, BorderLayout.CENTER);
+         this.add(jp3, BorderLayout.SOUTH);
+         
+         this.setSize(300,200);
+         this.setVisible(true);
+     }
+     @Override
+     public void actionPerformed(ActionEvent e) {
+         // TODO Auto-generated method stub
+         if(e.getSource() == jb1){
+             Connection ct = null;
+             PreparedStatement pstmt = null;
+             ResultSet rs = null;
+             
+             try{
+                 //1.加载驱动
+                 Class.forName("com.mysql.jdbc.Driver");
+                 System.out.println("加载成功");
+                 //2.连接数据库
+                 //定义几个常量
+                 String url = "jdbc:mysql://localhost:3306/spdb1";
+                 String user = "root";
+                 String passwd = "qsefthuko";
+                 ct = DriverManager.getConnection(url,user,passwd);
+         
+                 //与编译语句对象
+             
+                 String strsql = "insert into stu values(?,?,?,?,?,?)";
+                 pstmt = ct.prepareStatement(strsql);
+                 
+                 //给对象赋值
+                 pstmt.setString(1,jf1.getText());
+                 pstmt.setString(2,jf2.getText());
+                 pstmt.setString(3,jf3.getText());
+                 pstmt.setString(4,jf4.getText());
+                 pstmt.setString(5,jf5.getText());
+                 pstmt.setString(6,jf6.getText());
+                 
+                 pstmt.executeUpdate();
+                 
+                 this.dispose();//关闭对话框
+                 
+             }catch(Exception arg1){
+                 arg1.printStackTrace();
+             }finally{
+                 try{
+                 if(rs!=null){
+                 rs.close();
+                 rs = null;
+                     }
+                 if(pstmt != null){
+                 pstmt.close();
+                 pstmt = null;
+                     }
+                 if(ct != null){
+                 ct.close();
+                 ct = null;
+                     }                
+                 }catch(Exception arg2){
+                     arg2.printStackTrace();
+                 }
+             }
+             
+         }
+         
+     }
+     
+     
+ }

+ 129 - 0
StuModel.java

@@ -0,0 +1,129 @@
+package C;
+
+import java.sql.Connection;
+ import java.sql.DriverManager;
+ import java.sql.ResultSet;
+ import java.sql.Statement;
+ import java.util.Vector;
+ import javax.swing.table.*;
+ 
+ public class StuModel extends AbstractTableModel{
+ 
+     //rowData存放行数据,columnNames存放列名
+     Vector rowData,columnNames;
+             
+     //定义连接数据库的变量
+     Statement stat = null;
+     Connection ct = null;
+     ResultSet rs = null;
+     
+     //初始化
+     public void init(String sql){
+         if(sql.equals("")){
+             sql = "select * from stu";
+         }
+         //中间
+         //设置列名
+         columnNames = new Vector();
+         columnNames.add("设备ID");
+         columnNames.add("设备名称");
+         columnNames.add("大小");
+         columnNames.add("重量");
+         columnNames.add("供应商");
+         columnNames.add("价格");
+                 
+         //rowData存放多行
+         rowData = new Vector();
+                 
+         try{
+         //1.加载驱动
+         Class.forName("com.mysql.jdbc.Driver");
+         System.out.println("加载成功");
+         //2.连接数据库
+         //定义几个常量
+         String url = "jdbc:mysql://localhost:3306/spdb1";
+         String user = "root";
+         String passwd = "qsefthuko";
+                     
+         ct = DriverManager.getConnection(url,user,passwd);
+         stat = ct.createStatement();//创建stat对象 
+         rs = stat.executeQuery(sql);//查询结果
+                     
+         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{
+         try{
+         if(rs!=null){
+         rs.close();
+         rs = null;
+             }
+         if(stat != null){
+         stat.close();
+         stat = null;
+             }
+         if(ct != null){
+         ct.close();
+         ct = null;
+             }
+                 }catch(Exception e){
+             e.printStackTrace();
+             }
+         }
+     }
+     
+     //增加函数
+     public void addStu(String sql){
+         //根据用户输入的sql语句,完成添加任务
+         
+         
+         
+     }
+     
+     //第二个构造函数,通过传递的sql语句来获得数据模型
+     public StuModel(String sql){
+         this.init(sql);
+     }
+     
+     //构造函数,用于初始化我的数据模型(表)
+     public StuModel(){
+         this.init("");
+     }
+     
+     //得到共有多少行
+     public int getRowCount() {
+         // TODO Auto-generated method stub
+         return this.rowData.size();
+     }
+ 
+     //得到共有多少列
+     public int getColumnCount() {
+         // TODO Auto-generated method stub
+         return this.columnNames.size();
+     }
+ 
+     //得到某行某列的数据
+     public Object getValueAt(int row, int column) {
+         // TODO Auto-generated method stub
+         return ((Vector)(this.rowData.get(row))).get(column);
+     }
+     
+     //得到属性名字
+     public String getColumnName(int column) {
+         // TODO Auto-generated method stub
+         return (String)this.columnNames.get(column);
+     }
+ }
+

+ 146 - 0
StuUpDiag.java

@@ -0,0 +1,146 @@
+package C;
+
+
+/*
+ * 修改学生
+ */
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.sql.Statement;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.*;
+
+public class StuUpDiag extends JDialog implements ActionListener {
+    //定义我需要的swing组件
+    JLabel jl1,jl2,jl3,jl4,jl5,jl6;
+    JTextField jf1,jf2,jf3,jf4,jf5,jf6;
+    JPanel jp1,jp2,jp3;
+    JButton jb1,jb2;
+    //owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
+    public StuUpDiag(Frame owner,String title, boolean modal,StuModel sm,int rowNum){
+        //调用父类方法
+        super(owner,title,modal);
+        
+        jl1 = new JLabel("设备ID");
+        
+        jl2 = new JLabel("设备名称");
+        
+        jl3 = new JLabel("大小");    
+        jl4 = new JLabel("重量");
+        jl5 = new JLabel("供应商");
+        
+        
+        
+        jl6 = new JLabel("价格");
+        
+        
+        jf1 = new JTextField(10);jf1.setText((sm.getValueAt(rowNum, 0)).toString());
+        jf2 = new JTextField(10);jf2.setText((String)sm.getValueAt(rowNum, 1));
+        jf3 = new JTextField(10);jf3.setText(sm.getValueAt(rowNum, 2).toString());
+        jf4 = new JTextField(10);jf4.setText((sm.getValueAt(rowNum, 3)).toString());    
+        jf5 = new JTextField(10);jf5.setText((String)sm.getValueAt(rowNum, 4));
+        jf6 = new JTextField(10);jf6.setText((String)sm.getValueAt(rowNum, 5));
+        
+        jb1 = new JButton("修改");
+        jb1.addActionListener(this);
+        jb2 = new JButton("取消");
+        
+        jp1 = new JPanel();
+        jp2 = new JPanel();
+        jp3 = new JPanel();
+        
+        //设置布局
+        jp1.setLayout(new GridLayout(6,1));
+        jp2.setLayout(new GridLayout(6,1));
+        
+        jp3.add(jb1);
+        jp3.add(jb2);
+        
+        jp1.add(jl1);
+        jp1.add(jl2);
+        jp1.add(jl3);
+        jp1.add(jl4);
+        jp1.add(jl5);
+        jp1.add(jl6);
+        
+        jp2.add(jf1);
+        jp2.add(jf2);
+        jp2.add(jf3);
+        jp2.add(jf4);
+        jp2.add(jf5);
+        jp2.add(jf6);
+        
+        this.add(jp1, BorderLayout.WEST);
+        this.add(jp2, BorderLayout.CENTER);
+        this.add(jp3, BorderLayout.SOUTH);
+        
+        this.setSize(300,200);
+        this.setVisible(true);
+    }
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        // TODO Auto-generated method stub
+        if(e.getSource() == jb1){
+            Connection ct = null;
+            PreparedStatement pstmt = null;
+            ResultSet rs = null;
+            
+            try{
+                //1.加载驱动
+                Class.forName("com.mysql.jdbc.Driver");
+                System.out.println("加载成功");
+                //2.连接数据库
+                //定义几个常量
+                String url = "jdbc:mysql://localhost:3306/spdb1";
+                String user = "root";
+                String passwd = "qsefthuko";
+                ct = DriverManager.getConnection(url,user,passwd);
+        
+                //与编译语句对象
+                
+                String strsql = "insert into stu values(?,?,?,?,?,?)";
+                pstmt = ct.prepareStatement(strsql);
+
+                //给对象赋值
+                pstmt.setString(1,jf1.getText());
+                pstmt.setString(2,jf2.getText());
+                pstmt.setString(3,jf3.getText());
+                pstmt.setString(4,jf4.getText());
+                pstmt.setString(5,jf5.getText());
+                pstmt.setString(6,jf6.getText());
+                
+                pstmt.executeUpdate();
+
+                this.dispose();//关闭对话框
+                
+            }catch(Exception arg1){
+                arg1.printStackTrace();
+            }finally{
+                try{
+                if(rs!=null){
+                rs.close();
+                rs = null;
+                    }
+                if(pstmt != null){
+                pstmt.close();
+                pstmt = null;
+                    }
+                if(ct != null){
+                ct.close();
+                ct = null;
+                    }                
+                }catch(Exception arg2){
+                    arg2.printStackTrace();
+                }
+            }
+            
+        }
+        
+    }
+    
+    
+}

+ 178 - 0
Test3.java

@@ -0,0 +1,178 @@
+package C;
+
+
+ import javax.swing.*;
+ import java.util.*;
+ import java.awt.*;
+ import java.awt.event.*;
+ import java.sql.Connection;
+ import java.sql.Driver;
+ import java.sql.DriverManager;
+ import java.sql.PreparedStatement;
+ import java.sql.ResultSet;
+ import java.sql.Statement;
+ 
+ public class Test3 extends JFrame implements ActionListener {
+     //定义一些控件
+     JPanel jp1,jp2;
+     JLabel jl1,jl2;
+     JButton jb1,jb2,jb3,jb4,jb5;
+     JTable jt;
+     JScrollPane jsp;
+     JTextField jtf;
+     StuModel sm;
+     //定义连接数据库的变量
+     Statement stat = null;
+     PreparedStatement ps;
+     Connection ct = null;
+     ResultSet rs = null;
+     
+     public static void main(String[] args){
+         Test3 test3 = new Test3();
+     }
+     //构造函数
+     public 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);
+         jb5 = new JButton("返回");
+         jb5.addActionListener(this);
+         jp1.add(jb5);
+ 
+         jb2 = new JButton("添加");
+         jb2.addActionListener(this);
+         jb3 = new JButton("修改");
+         jb3.addActionListener(this);
+         jb4 = new JButton("删除");
+         jb4.addActionListener(this);
+
+         
+         jp2 = new JPanel();
+         jp2.add(jb2);
+         jp2.add(jb3);
+         jp2.add(jb4);
+         //创建模型对象
+         sm = new StuModel();
+         
+         
+         //初始化
+         jt = new JTable(sm);
+         
+         jsp = new JScrollPane(jt);
+         
+         //将jsp放入到jframe中
+         this.add(jsp);
+         this.add(jp1,"North");
+         this.add(jp2,"South");
+         this.setSize(600, 400);
+         this.setLocation(300, 200);
+         this.setDefaultCloseOperation(EXIT_ON_CLOSE);
+         this.setVisible(true);
+     
+     }
+     public void actionPerformed(ActionEvent arg0) {
+         //判断是哪个按钮被点击
+      if(arg0.getSource() == jb1){
+          System.out.println("用户希望被查询...");
+         //因为把对表的数据封装到StuModel中,可以比较简单的完成查询
+         String name = this.jtf.getText().trim();
+         //写一个sql语句
+         String sql = "select * from stu where 设备名称 = '"+name+"' ";
+         //构建一个数据模型类,并更新
+         sm = new StuModel(sql);
+         //更新jtable
+           jt.setModel(sm);        
+       }
+      else if(arg0.getSource() == jb5){
+    	      System.out.println("返回...");
+    	      String sql = "select * from stu";
+              sm = new StuModel(sql);
+              jt.setModel(sm);
+       }	      
+      
+      //一、弹出添加界面
+      else if(arg0.getSource() == jb2){
+      System.out.println("添加...");
+      StuAddDiag sa = new StuAddDiag(this,"添加设备",true);
+          
+      //重新再获得新的数据模型,
+      sm = new StuModel();
+      jt.setModel(sm);
+
+      }else if(arg0.getSource() == jb4){
+      //二、删除记录
+      //1.得到的ID
+      int rowNum = this.jt.getSelectedRow();//getSelectedRow会返回给用户点中的行
+      //如果该用户一行都没有选,就返回-1
+      if(rowNum == -1){
+      //提示
+      JOptionPane.showMessageDialog(this, "请选中一行");
+      return ;
+      }
+     //得到设备ID
+      String 设备Id = (String)sm.getValueAt(rowNum, 0);
+      System.out.println("Id:   "+设备Id);
+          
+      //连接数据库,完成删除任务
+      try{
+         //1.加载驱动
+      Class.forName("com.mysql.jdbc.Driver");    
+      //2.连接数据库
+      String url = "jdbc:mysql://localhost:3306/spdb1";
+      String user = "root";
+      String passwd = "qsefthuko";
+              
+      ct = DriverManager.getConnection(url, user, passwd);
+      System.out.println("连接成功");
+      ps = ct.prepareStatement("delete from stu where 设备Id = ?");
+
+      ps.setString(1,设备Id);
+
+      ps.executeUpdate();
+                       
+      }catch(Exception e){
+          e.printStackTrace();
+      }finally{
+      try{
+          if(rs!= null){
+          rs.close();
+          rs = null;
+                      
+          }
+          if(ps!= null){
+          ps.close();
+          ps = null;
+          }
+          if(ct != null){
+          ct.close();
+          ct = null;
+          }
+      } catch(Exception e){
+          e.printStackTrace();
+      }
+          }
+      sm = new StuModel();
+     //更新jtable
+      jt.setModel(sm); 
+      }else if(arg0.getSource() == jb3){
+      System.out.println("11111");
+      //三、用户希望修改
+      int rowNum = this.jt.getSelectedRow();
+      if(rowNum == -1){
+      //提示
+      JOptionPane.showMessageDialog(this, "请选择一行");
+      return ;
+      }
+      //显示对话框
+      System.out.println( "12435");
+     StuUpDiag su = new StuUpDiag(this, "修改设备", true, sm, rowNum);
+     sm = new StuModel();
+     jt.setModel(sm);
+      }    
+     }
+ }