Swing界面 :菜单界面的删除,修改,和查询和退出(JDBC)

这篇博客介绍了如何使用Java Swing构建菜单界面,并通过JDBC实现对数据库中菜单数据的查询、删除、修改功能。文章详细展示了从创建项目到实现 Dao 接口及其实现类、实体类、界面组件和测试的过程。

1.建项目 建Dao entity frame test util包(以下为效果图)

 

2.从Dao包开始(先写接口,在写个类实现)

接口:

public interface CdImpl {
   //查询所有
    public List<cd> SelectAll(String cname);
   //id查询
    public cd selectcid(int cid);
    //修改
    public int update(cd c);
    //删除
    public int delete(int cid);
}

接口实现类:

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.ArrayList;

import java.util.List;

 

import com.entity.cd;

import com.util.DBUtil;

 

public class CdDao implements CdImpl{

 

         @Override

         public List<cd> SelectAll(String cname) {

         List<cd> list = new ArrayList<cd>();

         Connection conn = DBUtil.getConnection();

         String sql="";

         try {

                  if(cname !=null){

                          sql ="select * from cd where cname like '%" + cname + "%'";

                  }else{

                          sql="select * from cd";

                  }

                  PreparedStatement ps = conn.prepareStatement(sql);

                  ResultSet rs = ps.executeQuery();

                  while(rs.next()){

                          cd c = new cd();

                          c.setCid(rs.getInt("cid"));

                          c.setCname(rs.getString("cname"));

                          c.setCmoney(rs.getString("cmoney"));

                          c.setCtotal(rs.getString("ctotal"));

                          list.add(c);

                  }

         } catch (Exception e) {

                  // TODO: handle exception

         }

        

                  return list;

         }

 

         @Override

         public cd selectcid(int cid) {

                  //select *from cd where cid = 2;

                  cd c = new cd();

                  Connection conn = DBUtil.getConnection();

                  String sql="select * from cd where cid = ?";

                  try {

                          PreparedStatement ps = conn.prepareStatement(sql);

                          ps.setInt(1, cid);

                          ResultSet rs= ps.executeQuery();

                          while(rs.next()){

                                   c.setCid(rs.getInt("cid"));

                                   c.setCname(rs.getString("cname"));

                                   c.setCmoney(rs.getString("cmoney"));

                                   c.setCtotal(rs.getString("ctotal"));

                          }

                  } catch (Exception e) {

                          // TODO: handle exception

                  }

        

                  return c;

         }

 

         @Override

         public int update(cd c) {

                  // 刷新

                  Connection conn = DBUtil.getConnection();

                  String sql="update cd set cname=?,cmoney=?,ctotal=? where cid=?";

                  int n=0;

                 

                  try {

                  PreparedStatement ps = conn.prepareStatement(sql);

                  ps.setString(1, c.getCname());

                  ps.setString(2, c.getCmoney());

                  ps.setString(3, c.getCtotal());

                  ps.setInt(4, c.getCid());

                  n=ps.executeUpdate();

                  } catch (Exception e) {

                          // TODO: handle exception

                  }

                  DBUtil.close(conn);

                  return n;

         }

 

         @Override

         public int delete(int cid) {

                  // 删除

                  Connection conn =DBUtil.getConnection();

                  String sql="delete from cd where cid=?";

                  int n=0;

                  try {

                          PreparedStatement ps = conn.prepareStatement(sql);

                          ps.setInt(1, cid);

                          n=ps.executeUpdate();

                  } catch (Exception e) {

                          // TODO: handle exception

                  }

                  DBUtil.close(conn);

                  return n;

         }

 

}

3 entity包

 

//菜单实体类
public class cd {
  private int cid;      //对应第一个
  private String cname;   //对应第二个
  private String cmoney;  //对应第三个
  private String ctotal;    //对应第四个
public cd() {
    super();
}
public cd(int cid, String cname, String cmoney, String ctotal) {
    super();
    this.cid = cid;
    this.cname = cname;
    this.cmoney = cmoney;
    this.ctotal = ctotal;
}
public int getCid() {
    return cid;
}
public void setCid(int cid) {
    this.cid = cid;
}
public String getCname() {
    return cname;
}
public void setCname(String cname) {
    this.cname = cname;
}
public String getCmoney() {
    return cmoney;
}
public void setCmoney(String cmoney) {
    this.cmoney = cmoney;
}
public String getCtotal() {
    return ctotal;
}
public void setCtotal(String ctotal) {
    this.ctotal = ctotal;
}
@Override
public String toString() {
    return "cd [cid=" + cid + ", cname=" + cname + ", cmoney=" + cmoney + ", ctotal=" + ctotal + "]";
}
  
  
}

4.frame包

import java.awt.event.ActionEvent;

 

import java.awt.event.ActionListener;

import java.util.List;

import java.util.Vector;

 

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.table.DefaultTableModel;

 

import com.Dao.CdDao;

import com.Dao.CdImpl;

import com.entity.cd;

 

public class Frame01 extends JFrame{

     //布局为流式布局

        

         JPanel jPanel = new JPanel();

         JLabel jLabel = new JLabel("菜单");

        

         //表单

         JTable jTable = new JTable();

         //设置表单格式

    DefaultTableModel dtModel = new DefaultTableModel();

    //设置滚动  分页

    JScrollPane pane = new JScrollPane(jTable);

   

    JPanel jPanel2 = new JPanel();

    JTextField field = new JTextField(15);

    JButton button1 = new JButton("查询");

         JButton button2 = new JButton("退出");

        

          

    JPanel jPanel3 = new JPanel();

    JButton button = new JButton("修改");

    JButton button3 = new JButton("删除");

    CdImpl impl = new CdDao();

         public void showTime(String cname) {

                  // TODO Auto-generated method stub

                  List<cd> cd = impl.SelectAll(cname);

                  int n=dtModel.getRowCount();

                  for (int i = 0; i < n; i++) {

                          dtModel.removeRow(0);   //相当于刷新

                  }

                  for(cd c:cd){

                          Vector<Object> vector = new Vector<Object>();

                          vector.add(c.getCid());

                          vector.add(c.getCname());

                          vector.add(c.getCmoney());

                          vector.add(c.getCtotal());

                           dtModel.addRow(vector);

                           System.out.println(c);

                  }

         }

   

         public Frame01(){

                  this.setTitle("天价餐厅");

                  this.setSize(700, 500);

                  this.setLocationRelativeTo(null);

                  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                  jPanel.add(jLabel);

                 

                  dtModel.addColumn("id");

                  dtModel.addColumn("菜名");

                  dtModel.addColumn("价格");

                  dtModel.addColumn("总量");

                 

                  jTable.setModel(dtModel);

                  showTime("");

                 

                  //查询

                  button1.addActionListener(new ActionListener() {

                         

                          @Override

                          public void actionPerformed(ActionEvent e) {

                                   String cname=field.getText();

                                   showTime(cname);

                                  

                          }

                  });

                 

                  //删除

                  button3.addActionListener(new ActionListener() {

                         

                          @Override

                          public void actionPerformed(ActionEvent e) {

                               int c = jTable.getSelectedRow();

                               System.out.println("第几行"+c);

                                   String cid=jTable.getValueAt(c, 0).toString();

                                   int n=impl.delete(Integer.parseInt(cid));

                                   if(n>0){

                                          JOptionPane.showMessageDialog(null, "删除成功");

                                          showTime("");

                                 }else{

                                          JOptionPane.showMessageDialog(null, "删除失败");

                                 }

                          }

                  });

                  //修改

                  button.addActionListener(new ActionListener() {

                         

                          @Override

                          public void actionPerformed(ActionEvent e) {

                                   // TODO Auto-generated method stub

                                   int c = jTable.getSelectedRow();

                                   System.out.println(c);

                                   String cid =jTable.getValueAt(c, 0).toString();

                                   new Update(cid, Frame01.this);

                          }

                  });

                  //退出

                  button2.addActionListener(new ActionListener() {

                         

                          @Override

                          public void actionPerformed(ActionEvent e) {

                                   System.exit(0);        //退出

                          }

                  });

                  jPanel2.add(field);

                  jPanel2.add(button1);

                  jPanel2.add(button2);

                 

                  jPanel3.add(button);

                  jPanel3.add(button3);

                 

                  this.getContentPane().add(jPanel, "North");

                 

                  this.getContentPane().add(pane, "West");

                  this.getContentPane().add(jPanel3, "East");

                 

                  this.getContentPane().add(jPanel2, "South");

          

                  this.setVisible(true);

         }

        

 

         public static void main(String[] args) {

                  // TODO Auto-generated method stub

          new Frame01();

         }

 

}

 

4.1有更新按钮,需要弹窗修改,建Update 类

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

 

import com.Dao.CdDao;

import com.Dao.CdImpl;

import com.entity.cd;

 

 

public class Update extends JFrame{

   JPanel jPanel = new JPanel();

   JLabel jLabel=new JLabel("cid:");

         JTextField field=new JTextField(15);

         JLabel jLabel1=new JLabel("菜名:");

         JTextField field1=new JTextField(15);

         JLabel jLabel2=new JLabel("价格:");

         JTextField field2=new JTextField(15);

         JLabel jLabel3=new JLabel("总量:");

         JTextField field3=new JTextField(15);

         JButton button=new JButton("修改");

        

         CdImpl cdImpl = new CdDao();

         public Update(String cid,final Frame01 frame01){

                  this.setTitle("修改");

                  this.setSize(300, 500);

                  this.setLocationRelativeTo(null);

                  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                  //加载数据

                  cd c = cdImpl.selectcid(Integer.parseInt(cid));

                  field.setText(c.getCid()+"");

                  field1.setText(c.getCname()+"");

                  field2.setText(c.getCmoney()+"");

                  field3.setText(c.getCtotal()+"");

                  jPanel.add(jLabel);

                  jPanel.add(field);

                  jPanel.add(jLabel1);

                  jPanel.add(field1);

                  jPanel.add(jLabel2);

                 

                  jPanel.add(field2);

                  jPanel.add(jLabel3);

                  jPanel.add(field3);

                  jPanel.add(button);

                 

                  button.addActionListener(new ActionListener() {

                         

                          @Override

                           public void actionPerformed(ActionEvent e) {

                                   // TODO Auto-generated method stub

                                   cd c = new cd();

                                   String cid=field.getText();

                                   String cname =field2.getText();

                                   String cmoney =field3.getText();

                                   String ctotal =field.getText();

                                  

                                   c.setCid(Integer.parseInt(cid));

                                   c.setCname(cname);

                                   c.setCmoney(cmoney);

                                   c.setCtotal(ctotal);

                                   int n=cdImpl.update(c);

                 if(n>0){

                                            JOptionPane.showMessageDialog(null, "修改成功");

                                            Update.this.dispose();

                                            frame01.showTime("");

                                   }else{

                                            JOptionPane.showMessageDialog(null, "修改失败");

                                   }

                                  

                          }

                  });

                 

                  this.add(jPanel);

                  this.setVisible(true);

         }

}

5.Test包(测试Dao的方法有错没)

import java.util.List;

 

import org.junit.Test;//在项目里Build Path

 

import com.Dao.CdDao;

import com.Dao.CdImpl;

import com.entity.cd;

import com.util.DBUtil;

 

public class Demo {

 

        

         @Test   //出不来的原因是  import org.junit.Test; 的Test与类名相冲突

         public void test01(){

                  System.out.println(DBUtil.getConnection());

         }

        

         //通过cid查询

         @Test

         public void test02(){

                  CdImpl cdImpl = new CdDao();

                  cd c =cdImpl.selectcid(2);

                  System.out.println(c);

         }

        

         @Test

         public void test03(){

                  List<cd> list = new CdDao().SelectAll("");

                  System.out.println(list);

         }

        

         @Test

         public void test04(){

                  CdImpl cdImpl = new CdDao();

                  int n=cdImpl.delete(2);

                  System.out.println(n);

         }

        

         @Test

         public void test05(){

                  CdImpl cdImpl = new CdDao();

                  cd c = new cd();

                  c.setCid(3);

                  c.setCname("云吞");

                  c.setCmoney("14");

                  c.setCtotal("78");

                  int n=cdImpl.update(c);

                  System.out.println(n);

         }

}

6.util包

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil {
   static private Connection conn;
   static private String driver="com.mysql.jdbc.Driver";
   static private String url="jdbc:mysql://localhost:3306/mysql";   //首先 知道自个儿的表的地方
   static private String user="root";
   static private String password="root";
   static{
       try {
        Class.forName(driver);
        conn=DriverManager.getConnection(url, user, password);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
   }
   //返回数据库连接池对象
   public static Connection getConnection(){
       return conn;
   }
   //关闭连接池
   public static void close(Connection conn){
       try {
        conn.close();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
   }
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值