我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

java-贺威栋-2021.03.15

[复制链接]
I5029学员认证 发表于 2021-3-15 19:45:56 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
package equ.utils;

/*
操作sqlite数据库,实现对数据库的增删改查功能
JDBC Mysql、sqlite有对应的jar,maven的官网上下载
*/

import equ.model.Equ;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class SqliteDb {

    // 连接数据库
    private Connection connect() {
        // jdbc:subprotocol:subname
        // jdbc:数据库类型:数据库相对于工程的路径
        String url = "jdbc:sqlite:src/equ/db/equ.db";
        try {
            // 加载类
            Class.forName("org.sqlite.JDBC");
            // 连接数据库
            Connection conn = DriverManager.getConnection(url);
            System.out.println("连接数据库成功");
            return conn;
        } catch (Exception e) {
            System.out.println("连接数据库异常,异常信息为:" + e.getMessage());
        }
        return null;
    }

    // 断开数据库
    private void disconnect(Connection conn) {
        try {
            conn.close();
        } catch (SQLException e) {
            System.out.println("断开数据库异常,异常信息为:" + e.getMessage());
        }
    }

    // 执行sql语句,执行插入、删除、更新类的操作,返回true/false
    private boolean executeUpdate(Connection conn,String sql) {
        // Statement是执行sql语句的接口
        Statement statement = null;
        try {
            statement = conn.createStatement();
            int count = statement.executeUpdate(sql);
            System.out.println("执行sql语句成功,影响" + count + "条数据");
            statement.close();
            return count >= 1;
        } catch (SQLException e) {
            System.out.println("执行sql语句异常,异常信息为:" + e.getMessage());
        }
        return false;
    }

    // 执行sql语句,执行查询类的操作,返回查询的结果
    private List<Equ> executeQuery(Connection conn, String sql) {
        List<Equ> equs = new ArrayList<>();
        Statement statement = null;
        try {
            statement = conn.createStatement();
            ResultSet rs = statement.executeQuery(sql);
            if (rs != null) { // 查询结果不为空
                while (rs.next()) {
                    // 根据列明获取每一列的值
                    String id = rs.getString("id");
                    String name = rs.getString("name");
                    String location = rs.getString("location");
                    String baofei = rs.getString("baofei");
                    String buyTime = rs.getString("buyTime");
                    String baoFeiTime = rs.getString("baoFeiTime");
                    String record = rs.getString("record");
                    // 根据获取的信息构造Equ对象
                    Equ equ = new Equ(id, name, location, baofei, buyTime, baoFeiTime, record);
                    equs.add(equ);
                }
                System.out.println("执行sql语句,查询到" + equs.size() + "条数据");
            }
        } catch (SQLException e) {
            System.out.println("执行sql语句异常,异常信息为:" + e.getMessage());
        }
        return equs;
    }

    // 创建表
    public static void initTable() {
        SqliteDb db = new SqliteDb();
        Connection conn = db.connect();
        db.executeUpdate(conn, "create table if not exists equ(id varchar(8) primary key, " +
                "name varchar(32), location varchar(32), baoFei varchar(2), buyTime varchar(16), baoFeiTime" +
                " varchar(16), record varchar(128))");
        db.disconnect(conn);
    }

    // 添加设备
    public static boolean addEqu(Equ equ) {
        // 获取设备的属性
        String id = equ.getId();
        String name = equ.getName();
        String location = equ.getLocation();
        String baofei = equ.getBaoFei();
        String buyTime = equ.getBuyTime();
        String baoFeiTime = equ.getBaoFeiTime();
        String record = equ.getRecord();

        SqliteDb db = new SqliteDb();
        Connection conn = db.connect();
        String sql = String.format("insert into equ values('%s','%s','%s','%s','%s','%s','%s')",
                id, name, location, baofei, buyTime, baoFeiTime, record);
        boolean bool = db.executeUpdate(conn, sql);
        db.disconnect(conn);
        return bool;
    }

    // 删除设备
    public static boolean deleteEqu(String id) {
        // delete from equ where id = '10001';
        SqliteDb db = new SqliteDb();
        Connection conn = db.connect();
        id = String.format("delete from equ where id = '%s'", id);
        boolean bool = db.executeUpdate(conn, id);
        db.disconnect(conn);
        return bool;

    }

    // 查找设备
    public static List<Equ> queryAll(String names) {
        // select * from equ;
        SqliteDb db = new SqliteDb();
        Connection conn = db.connect();
        names = String.format("select * from %s", names);
        List<Equ> bool = db.executeQuery(conn, names);
        return bool;
    }

    // 根据名字模糊查询
    public static List<Equ> queryByName(String name) {
        // select * from equ where name like '%笔记本%';
        SqliteDb db = new SqliteDb();
        Connection conn = db.connect();
        name = String.format("select * from equ where name like '%s'", name);
        List<Equ> bool = db.executeQuery(conn, name);
        db.disconnect(conn);
        return bool;
    }

    // 更新设备信息,根据id修改其他信息
    public static boolean updateEqu(Equ equ) {
        // update equ set name = '华硕' where id = '10001';
        String id = equ.getId();
        String name = equ.getName();
        String location = equ.getLocation();
        SqliteDb db = new SqliteDb();
        Connection conn = db.connect();
        id = String.format("update equ set name = '%s',location = '%s' where id = '%s'", name,location,id);
        boolean bool = db.executeUpdate(conn, id);
        db.disconnect(conn);
        return bool;
    }

    // 测试代码,可删除
    public static void main(String[] args) {
        /*SqliteDb db = new SqliteDb();
        Connection conn = db.connect();
        db.executeUpdate(conn, "create table if not exists equ(id varchar(8) primary key, name varchar(32), location varchar(32), baoFei varchar(2), buyTime varchar(16), baoFeiTime varchar(16), record varchar(128))");
        db.executeUpdate(conn, "insert into equ values('10001','14寸笔记本电脑','1018房间','否','2021-1-1','','无')");
        List<Equ> equs = db.executeQuery(conn, "select * from equ");
        System.out.println(equs);
        db.disconnect(conn);*/
        SqliteDb.initTable();
        /*Equ equ = new Equ("10005", "电视", "1019房间");
        SqliteDb.addEqu(equ);

        Equ equ1 = new Equ("10006", "冰箱", "1019房间",
                "否", "2019-4-5", "无", "");
        SqliteDb.addEqu(equ1);*/

        // SqliteDb.deleteEqu("10001");
        // SqliteDb.queryByName("%电视%");
        // SqliteDb.queryAll("equ");
        Equ equ = new Equ("10005", "你好", "1021房间");
        SqliteDb.updateEqu(equ);

    }
}

回复

使用道具 举报

关注0

粉丝0

帖子27

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备20001493号-1 )

版权所有 © 西安菁英教育科技有限公司 2023-2026