Java泛型和JDBC设计一个U盘信息录入到数据库中的界面

一、实验内容

1.定义一个U类,包含品牌(brand)、容量(size)、接口类型(type)、价格(price)等信息。然后编写一个录入U盘信息的录入界面,录入一个U盘信息,将其保存到数据库中。

2.从数据库中读入至少4条U盘的信息,然后将这些信息保存到ArrayList集合对象中,点击“排序”按钮,对U盘容量进行排序然后输出。

二、实验目的

掌握JDBC中各种接口和类的使用

掌握数据库的设计

熟悉UI界面设计

三、代码演示

1、U盘信息类


package exam;

public class Udisk {

    private String brand;
    private int size;
    private String type;
    private float price;

    public Udisk() {
    }

    public Udisk(String brand, int size, String type, float price) {
        this.brand = brand;
        this.size = size;
        this.type = type;
        this.price = price;
    }

    public String getBrand() {
        return brand;
    }

    public int getSize() {
        return size;
    }

    public String getType() {
        return type;
    }

    public float getPrice() {
        return price;
    }

    @Override
    public String toString() {
        return brand + " " + size + " " + type + " " + price;
    }
}

2、数据库帮助类

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package DB;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DBHelper {

    private static final String URL = "jdbc:mysql://localhost:3306/dvd";//数据库地址
    private static final String use = "root";
    private static final String passward = "123";
    private static Connection conn = null;//先声明一个空的连接对象
    private static Statement stat = null;//必须在sql包而不是mysql
    //创建数据库连接对象

    private static void getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //连接数据库
            conn = DriverManager.getConnection(URL, use, passward);
            stat = conn.createStatement();//数据库交互对象           
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static ResultSet executeQuery(String sql) {//查询,该参数为sql语句
        if (conn == null || stat == null) {
            getConnection();
        }
        ResultSet rs = null;
        try {
            rs = stat.executeQuery(sql);//交互对象stat把sql语句传入数据库执行返回rs结果集
        } catch (SQLException ex) {
            Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
        }
        return rs;//返回查询的结果集
    }

    public static void insert(String sql) {//插入
        if (conn == null || stat == null) {
            getConnection();
        }
        try {
            stat.executeUpdate(sql);//交互对象stat把sql传给数据库执行
        } catch (SQLException ex) {
            Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    //关闭数据库

    public static void Close() {
        try {
            if (conn != null && !conn.isClosed()) {
                conn.close();
                stat = null;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

3、界面设计类

package UI;

import DB.DBHelper;
import exam.Udisk;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.swing.JOptionPane;

public class UdiskInput extends javax.swing.JFrame {

    public static List<Udisk> list = null;

    public UdiskInput() {
        initComponents();
    }
 private void jBtnSaveActionPerformed(java.awt.event.ActionEvent evt) {                                         
        //把输入的数据赋值给对象ud
        Udisk u = new Udisk(String.valueOf(jCmbBrand.getSelectedItem()), Integer.parseInt(jTxtSize.getText()),
                String.valueOf(jCmbType.getSelectedItem()), Integer.parseInt(jTxtPrice.getText()));
        //把对象数据作为交互对象stat的sql语句的数据插入表中
        DBHelper dbh = new DBHelper();
        String sql = "insert into UdiskInfo(brand,size,type,price) values('" + u.getBrand()
                + "'," + u.getSize() + ",'" + u.getType() + "'," + u.getPrice() + ")";
        DBHelper.insert(sql);
        JOptionPane.showMessageDialog(this, "数据保存成功");
    }                                        

    private void jBtnReadActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        list = new ArrayList<Udisk>();
        ResultSet rs = DBHelper.executeQuery("select * from UdiskInfo");
        int i = 0;
        try {
            while (rs.next()) {//把所有结果集放入list中
                Udisk u = new Udisk(rs.getString("brand"), Integer.parseInt(rs.getString("size")),
                        rs.getString("type"), Integer.parseInt(rs.getString("price")));
                list.add(u);//保存到集合对象
                //这里使用追加文本的方式并换行实现显示所有信息
                jTxtAInfo.setText(jTxtAInfo.getText() + list.get(i).toString() + '\n');
                i++;
            }
        } catch (SQLException ex) {
            Logger.getLogger(UdiskInput.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                        

    private void jBtnSortActionPerformed(java.awt.event.ActionEvent evt) {                                         
//先判断数据量是否大于4
        if (list.size() < 4) {
            JOptionPane.showMessageDialog(this, "数据量不足无法排序");
        }

//对U盘容量进行排序然后输出。
        //1、把容量参数取出来单独放入一个list集合
        //2、使用collections工具类的sort升序排序
        //3、获取文本内容再追加排序结果显示信息
        List<Integer> SizeList = list.stream().map(Udisk -> Udisk.getSize()).collect(Collectors.toList());
        Collections.sort(SizeList);
        jTxtAInfo.setText(jTxtAInfo.getText() + '\n' + "容量升序排序:" + '\n' + SizeList.toString());
    }                                        
   // Variables declaration - do not modify                     
    private javax.swing.JButton jBtnRead;
    private javax.swing.JButton jBtnSave;
    private javax.swing.JButton jBtnSort;
    private javax.swing.JComboBox<String> jCmbBrand;
    private javax.swing.JComboBox<String> jCmbType;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTxtAInfo;
    private javax.swing.JTextField jTxtPrice;
    private javax.swing.JTextField jTxtSize;
    // End of variables declaration                   
}

 

四、运行截图

 

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值