App 开发者使用 JDBC 驱动操纵 MySql 数据库

作者: uniapp | 来源:发表于2018-05-20 11:37 被阅读22次

    JDBC 是 Java Database Connectivity 的简称,是 Sun 公司基于 Java 语言提供的用于操作数据库的实现类。我们知道操作数据库需要通过数据库驱动实现,所以 JDBC 也可以看做数据库驱动的实现类,是一种以提供接口的形式供应用程序调用的规范。

    基于 JDBC 开发操作 MySql 的项目,首选需要在项目中导入 MySql 的数据库驱动。然后操作数据库的过程可以细分为五个步骤:

    1 注册驱动;
    2 建立与数据库的链接;
    3 获取执行 mysql 语句的对象;
    4 执行 mysql 语句,获得结果集;
    5 释放资源;

    下面以 IDEA 为 IDE 开发 JDBC , 新建 JavaEE 项目:

    JDBC
    在项目目录 src 下新建取名为 jdbc 包和取名为 db.properties 的文件,在 jdbc 包中建立 JDBCUtils 和 JDBCRUD 的 java 类。其中 db.properties 文件用于存放配置,JDBCUtils 为工具类,封装 JDBC 通用语句; JDBCRUD 用于对 数据库进行操作。 JDBC

    首先导入 MySql 驱动(下载 MySql 驱动),加入到项目依赖:

    驱动1
    驱动2

    然后完善 src 文件夹下新创建的文件:
    db.properties 文件中对项目进行预配置:

    url=jdbc:mysql://localhost:3306/day15_jdbc
    username=root
    password=11111111
    driverclass=com.mysql.jdbc.Driver
    

    JDBCUtils 为工具类的具体内容为:

    package jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ResourceBundle;
    
    import org.junit.Test;
    
    public class JDBCUtils {
    
        private static String driverclass = null;
        private static String url = null;
        private static String username = null;
        private static String password = null;
    
        static {
            ResourceBundle bundle = ResourceBundle.getBundle("db");
            driverclass = bundle.getString("driverclass");
            url = bundle.getString("url");
            username = bundle.getString("username");
            password = bundle.getString("password");
        }
        public static Connection getConnection(){
            try {
                loadDriver();
                return DriverManager.getConnection(url, username, password);
            }catch (Exception e){
                e.printStackTrace();
                return null;
            }
    
        }
        public static void loadDriver(){
            try {
                Class.forName(driverclass);
    
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    
        public static  void  release(ResultSet rs, Statement stmt, Connection conn){
            if (rs!=null){
                try {
                    rs.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
                rs = null;
            }
            if (stmt!=null){
                try {
                    stmt.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
                stmt = null;
            }
            if (conn!=null){
                try {
                    conn.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
                conn = null;
            }
        }
    }
    

    使用工具类 JDBCUtils 和 配置文件 db.properties 对在 JDBCCRUD 类中对数据库进行增删改查操作:

    public class JDBCCRUD {
        public  void  insert(User user){
            Connection  conn = null;
            Statement stmt = null;
            try {
                conn = JDBCUtils.getConnection();
                stmt = conn.createStatement();
                String sql = String.format("insert into users values(null ,'%s','%s','%s');", user.getUsername(), user.getPassword(), user.getNickName());
                stmt.executeUpdate(sql);
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                JDBCUtils.release(null, stmt, conn);
            }
        }
        public  void  delete(User user){
            Connection  conn = null;
            Statement stmt = null;
            try {
                conn = JDBCUtils.getConnection();
                stmt = conn.createStatement();
                String sql = "delete from users where name = "
                        + user.getUsername() +";";
                stmt.executeUpdate(sql);
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                JDBCUtils.release(null, stmt, conn);
            }
        }
        public  void  update(User user){
            Connection  conn = null;
            Statement stmt = null;
            try {
                conn = JDBCUtils.getConnection();
                stmt = conn.createStatement();
                String sql = "update users set name = "
                        + user.getUsername() +" where name = " +
                        user.getUsername() +";";
                stmt.executeUpdate(sql);
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                JDBCUtils.release(null, stmt, conn);
            }
        }
        public ArrayList selectAll(){
            Connection  conn = null;
            Statement stmt = null;
            ResultSet rs = null;
    
            ArrayList list = new ArrayList();
            try {
                conn = JDBCUtils.getConnection();
                stmt = conn.createStatement();
                String sql = "select  * from users;";
                rs = stmt.executeQuery(sql);
    
                while (rs.next()){
                    int id = rs.getInt("id");
                    String username = rs.getString("username");
                    String password = rs.getString("password");
                    String nickname = rs.getString("nickname");
                    User user = new User(username, password, nickname);
                    list.add(user);
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                JDBCUtils.release(null, stmt, conn);
            }
            return list;
        }
    }
    

    最后可以在 JDBCQuickStart 中使用:

    public class JDBCQuickStart {
        @Test
        public void test(){
    
            User user = new User("4shen", "123", "shenshen");
            JDBCCRUD userDao = new JDBCCRUD();
            userDao.insert(user);
        }
    }
    

    其中在执行 mysql 语句的对象 statement 还可以执行对语句进行预处理和批处理。具体实现交给小伙伴尝试了。

    喜欢和关注都是对我的鼓励和支持~

    相关文章

      网友评论

        本文标题:App 开发者使用 JDBC 驱动操纵 MySql 数据库

        本文链接:https://www.haomeiwen.com/subject/ghvadftx.html