java实现的数据库管理类(mysql)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/47611939 在我们使用...
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/47611939

在我们使用数据库的时候,总会要写一个DBManager类来进行总体的数据库管理,在这里我们就要实现一个数据库管理类,这个是一个比较小型的数据库管理类,大体上实现了增删改查,在后面我们就会扩建这个数据库管理类,实现各种连接,来进行数据库的管理,好了,下面我们来看一下我们的代码:

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

public class DBManager {

    /**
     * 该方法用户连接数据库
     * 
     * @return 返回Connection的一个实例
     */
    private Connection getConnection() {

        Connection con = null;

        try {
            Class.forName(StaticVar.DRIVER_NAME).newInstance();

            con = DriverManager.getConnection(StaticVar.DB_URL,
                    StaticVar.USER_NAME, StaticVar.DB_PASSWD);

        } catch (InstantiationException e) {
            return null;
        } catch (IllegalAccessException e) {
            return null;
        } catch (ClassNotFoundException e) {
            return null;
        } catch (SQLException e) {
            return null;
        }

        return con;
    }

    /**
     * 用于查询sql语句
     * 
     * @param sql
     *            sql语句
     * @return 返回ResultSet集合
     */
    public ResultSet select(String sql) {
        ResultSet res = null;

        Connection con = getConnection();

        Statement state = null;

        if (!(con == null)) {

            try {
                state = con.createStatement();
                res = state.executeQuery(sql);
            } catch (SQLException e) {
                return null;
            }

        }

        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
                return null;
            }
        }

        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
                return null;
            }
        }

        return res;
    }

    /**
     * 向表中插入一个元素,返回插入后的元素的id
     * 
     * @param sql
     * @return
     */
    public int insert(String sql) {
        int iId = -1;

        Connection con = getConnection();

        Statement state = null;

        if (con != null) {
            try {
                state = con.createStatement();

                int res = state.executeUpdate(sql,
                        Statement.RETURN_GENERATED_KEYS);

                if (res != 0) {
                    ResultSet rs = state.getGeneratedKeys();
                    if (rs.next()) {
                        iId = rs.getInt(1);
                    }
                }
            } catch (SQLException e) {
                iId = -1;
            }

        }

        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
            }
        }

        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
            }
        }

        return iId;
    }

    /**
     * 修改表中的某个元素的数值
     * 
     * @param sql
     *            sql语句
     * @return 元素是否被成功修改
     */
    public boolean update(String sql) {
        boolean updated = false;

        Connection con = getConnection();
        Statement state = null;

        if (con != null) {
            try {
                state = con.createStatement();

                int res = state.executeUpdate(sql);

                if (res == 0) {
                    updated = false;
                } else {
                    updated = true;
                }
            } catch (SQLException e) {
                updated = false;
            }

        }

        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
            }
        }

        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
            }
        }

        return updated;
    }

    /**
     * 删除表中的某一个表项
     * 
     * @param sql
     *            sql语句
     * @return 返回是否删除成功
     */
    public boolean delete(String sql) {
        boolean deleted = false;

        Connection con = getConnection();

        Statement state = null;

        if (con != null) {
            try {
                state = con.createStatement();

                int res = state.executeUpdate(sql);

                if (res == 0) {
                    deleted = false;
                } else {
                    deleted = true;
                }

            } catch (SQLException e) {
                deleted = false;
            }

        }

        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
            }
        }

        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
            }
        }

        return deleted;
    }

}

下面看一下其中用到的一个类StaticVar。

StaticVar.java


public class StaticVar {

    public static final String DB_URL = "jdbc:mysql://localhost/db_test?useUnicode=true&characterEncoding=UTF-8";

    public static final String USER_NAME = "chen";
    public static final String DB_PASSWD = "******";
    public static final String DRIVER_NAME = "com.mysql.jdbc.Driver";



}

这样我们的一个小型的数据库管理类就实现了,至于后面的扩展,我们会在后面的博客中讲到。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
2月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
207 101
|
2月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
267 100
|
27天前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
77 4
|
1月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
129 5
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
112 1
|
1月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
171 1
|
1月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
119 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
122 1
|
1月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
212 5
|
2月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
106 13

推荐镜像

更多