关于java数据库的小练习

java练习 写个图书管理系统的demo

写着java想python 写着python想java 这两天对jdbc进行了些许的研究 不得不说的是,作为从python这种脚本语言入手的新手来讲,java的难度和性能真是高出python太多了,用起来稍显繁琐,不过java有个好处,就是上下限都很高,老油条和新人写出来的代码性能差距实际上差不太多,让我些许保留了颜面
此文算是作为java的学习笔记,若是有人赏脸阅读,望不吝赐教
先导入c3p0的依赖包
网上都有教程
然后写配置文件

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<default-config>
		<property name="dirverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/java?characterEncoding=UTF-8</property>
		<property name="user">username</property>
		<property name="password">password</property>
		<property name="initialPoolSize">10</property>
		<property name="maxPoolSize">10</property>
		<property name="minPoolSize">5</property>
		<property name="checkoutTimeout">30000</property>
	</default-config>
</c3p0-config>

先写个连接数据池的类

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class DBtool {
    static DataSource ds;
    static {
        ds=new ComboPooledDataSource();
    }
    public static Connection getCoon() throws SQLException {
        return ds.getConnection();
    }
}
;

作用嘛 目前我所知的就是省系统资源

import javax.swing.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class keep extends JFrame {
    public void keep(String id, String name, int page) throws SQLException {
        String add="insert into library(id,name,page) values(?,?,?)";
        Connection conn=null;
        PreparedStatement pstmt=null;
//        ResultSet rs=null;

        try {
            conn=DBtool.getCoon();
            pstmt=conn.prepareStatement(add);
            pstmt.setString(1,id);
            pstmt.setString(2,name);
            pstmt.setInt(3,page);
            pstmt.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("链接数据库失败!");
        }finally {
            pstmt.close();
            conn.close();
        }
    }
    public ResultSet allQuery() throws SQLException {
        String Query="Select * from library";
        Connection conn=null;
        ResultSet rs=null;
        PreparedStatement pstmt=null;
        try {
            conn=DBtool.getCoon();
            pstmt=conn.prepareStatement(Query);
            rs=pstmt.executeQuery();
//            while (rs.next()){
//                for (int i = 1; i <4 ; i++) {
//
//                    System.out.print(rs.getString(i)+" ");
//
//                }
//                System.out.println(" ");
//
//            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
//            assert pstmt != null;
//            pstmt.close();
//            conn.close();
        }
        System.out.println(rs);
        return rs;
    }


}

然后就是写点具体方法,查询和添加

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

public class mainCode extends JFrame implements ActionListener {
    JPanel p1, p2;
    JScrollPane jsp;
    JLabel id, name, page;
    JTextField idt, namet, paget;
    JTable table;
    JButton add, del, que, link;
    DefaultTableModel model;

    String[] head = {
            "ID", "NAME", "DATE"
    };
    String[][] data = {

    };
    Vector v;

    mainCode() throws SQLException {
        this.setSize(420, 600);
        this.setDefaultCloseOperation(3);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        this.setLayout(null);
        ResultSet rs;
        p1 = new JPanel();
        p1.setSize(380, 30);
        p1.setLocation(10, 10);
        id = new JLabel("ID:");
        p1.add(id);
        idt = new JTextField(10);
        p1.add(idt);
        name = new JLabel("名称:");
        p1.add(name);
        namet = new JTextField(5);
        p1.add(namet);
        page = new JLabel("页码:");
        p1.add(page);
        paget = new JTextField(8);
        p1.add(paget);
        this.add(p1);

        p2 = new JPanel();
        p2.setSize(380, 30);
        p2.setLocation(10, 50);
        add = new JButton("添加");
        p2.add(add);
        del = new JButton("删除");
        p2.add(del);
        que = new JButton("查询");
        p2.add(que);
        link = new JButton("连接");
        p2.add(link);
        this.add(p2);
        add.addActionListener(this);
        que.addActionListener(this);


        model = new DefaultTableModel(data, head);
        table = new JTable(model);
        jsp = new JScrollPane(table);
        jsp.setSize(380, 400);
        jsp.setLocation(10, 100);
        this.add(jsp);
        this.setVisible(true);

    }

    public static void main(String[] args) throws SQLException {
        new mainCode();
    }

    public void buzhi() throws SQLException {
        ResultSet rs;
        keep kp=new keep();
        rs=kp.allQuery();
        while (model.getRowCount()>0){
            model.removeRow(model.getRowCount()-1);
        }
        while (rs.next()){
            v=new Vector();
            for (int i = 1; i <4 ; i++) {
                v.add(rs.getString(i));
            }
            model.addRow(v);
        }
        table.invalidate();

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        keep kp = new keep();
        if (e.getSource() == add) {
            if ((idt.getText()).length()<1 ||(namet.getText()).length()<1|| (paget.getText()).length()<1 ){
                JOptionPane.showMessageDialog(null,"请填入必要信息!");
                return;
            }

            try {
                kp.keep(idt.getText(), namet.getText(), Integer.valueOf(paget.getText()));
                idt.setText(null);
                namet.setText(null);
                paget.setText(null);
                buzhi();
                table.invalidate();

            } catch (SQLException ex) {
                ex.printStackTrace();
                JOptionPane.showMessageDialog(null, "添加失败!");
            }
        } else if (e.getSource() == que) {
            try {
                buzhi();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }

        }
    }
}

这是主要的功能模块,本来在model&table这一块大概写了俩小时,因为多次点击查询键会是数据堆到一起,吃中午饭的时候灵光一闪,每次查询把table里的东西删干净就是了,这脑子属实⑧行

具体实现大概是这样的
练习作 轻喷
此外还有个登录类和注册类 我懒得写了 这方面没什么值得记录的
此文完结 若有看客欢迎批评指正

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值