zoukankan      html  css  js  c++  java
  • JDBC接口和工具类

    1     JDBC概述

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。是Java访问数据库的标准规范。JDBC是接口,驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库!

    驱动一般都由数据库生成厂商提供。

    2  JDBC开发步骤

    操作之前先导入jar包。

    创建lib目录,用于存放当前项目需要的所有jar包

    选择jar包,右键执行build path / Add to Build Path

    1.注册驱动.

    告知JVM使用的是哪一个数据库的驱动

    代码:Class.forName("com.mysql.jdbc.Driver");

    2.获得连接.

    使用JDBC中的类,完成对MySQL数据库的连接

    代码:Connection con = DriverManager.getConnection
    (“jdbc:mysql://localhost:3306/mydb”,”root”,”root”);

    3.获得语句执行平台

    通过连接对象获取对SQL语句的执行者对象

    使用PreparedStatement预处理对象时,建议每条sql语句所有的实际参数,都使用逗号分隔。

    4.执行sql语句

    使用执行者对象,向数据库执行SQL语句

    获取到数据库的执行后的结果

    l  int executeUpdate(); --执行insert update delete语句.

    l  ResultSet executeQuery(); --执行select语句.

    5.处理结果

    6.释放资源.

    调用一堆close()方法

    public class Demo05 {
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            update();
        }
        public static void update() throws ClassNotFoundException, SQLException{
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获得数据库连接对象
            String url="jdbc:mysql://localhost:3306/java1203?useUnicode=true&characterEncoding=UTF-8";
            String username="root";
            String password="123456";
            Connection conn=DriverManager.getConnection(url,username,password);
            //获得语句执行对象
            String sql="select count(*) from user where uname=? and pwd=?";
            PreparedStatement pst=conn.prepareStatement(sql);
            //给占位符赋值
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入用户名");
            String uname=sc.next();
            System.out.println("请输入密码");
            String pwd=sc.next();
            pst.setString(1, uname);
            pst.setString(2, pwd);
            //执行sql
            //executeQuery()查询,executeUpdate()修改
            ResultSet rs=pst.executeQuery();
            //处理结果集
            int count=0;
            while(rs.next()){
                count=rs.getInt(1);
            }
            System.out.println(count);
            //释放资源
            rs.close();
            pst.close();
            conn.close();
        }
    }

    3     JDBC工具类

    通过上述我们可以发现,每次连接数据库都要重复注册驱动,获得连接对象,为了提高代码的复用性,提高工作效率,将部分代码封装成工具类,以方便我们调用

    public class JDBCUtils {
        // 获取连接对象
        public static Connection getConn() {
            // 注册驱动
            Connection conn=null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                // 获得数据库连接对象
                String url = "jdbc:mysql://localhost:3306/java1203?useUnicode=true&characterEncoding=UTF-8";
                String username = "root";
                String password = "123456";
                try {
                    conn = DriverManager.getConnection(url, username, password);
                } catch (SQLException e1) {
                    
                    e1.printStackTrace();
                }
            }
            return conn;
        }
        //增删改释放资源的方法
        public static void close(Connection conn,PreparedStatement pst){
            if(pst!=null){
                try {
                    pst.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        //查询释放资源的方法
        public static void close(ResultSet rs,PreparedStatement pst,Connection conn){
            if(rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(pst!=null){
                try {
                    pst.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    龙井和碧螺春的功效与作用
    064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法
    063 01 Android 零基础入门 01 Java基础语法 08 Java方法 01 无参无返回值方法
    062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用
    061 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 08 一维数组总结
    060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序
    059 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 06 增强型for循环
    058 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 05 案例:求数组元素的最大值
    057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和
    056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用
  • 原文地址:https://www.cnblogs.com/quanjunkang/p/10648996.html
Copyright © 2011-2022 走看看