zoukankan      html  css  js  c++  java
  • 数据库JDBC的基本内容

    JDBC

    基本流程

    1. 首先向项目中导入jar包

    2. 创建如下代码

        			Class.forName("com.mysql.jdbc.Driver");
    			String url = "jdbc:mysql://localhost:3306/mybase";
    			String username="root";
    			String password="123";
    			con = DriverManager.getConnection(url, username, password);
    
    
    1. 使用方法
            String sql = "select * from user where name=?";   // sql语句
            PreparedStatement stmt = connection.prepareStatement("");   // 预编译
            stmt.setString(1, "lll");  // 给?占位符赋值
            ResultSet result = stmt.executeQuery();   // 取得查询的结果集对象
            while(result.next()){  // 遍历结果集,如果结果集中没有对象的话result.next()会返回null
                String str = result.getString(1);  // 取出结果集中的对象(列,列名)
            }
            stmt.executeUpdate();   // 数据更新使用的方法
            
            connection.close();   // 关闭资源
            stmt.close();
            
    

    加载properties配置文件

    • 将数据库的信息配置在properties中可以增加代码的灵活性,修改的时候不需要去改动代码.

    • 可以将properties文件放在src文件夹下面,这样编译完以后properties文件就会编译到bin文件夹中,可以通过类加载器获取.

    • InputStream in = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");

    JDBC工具类DBUtils

    • 封装了JDBC的操作,减少代码量

    基本操作

    • 首选创建DBUtils对象,传递的参数为DateSource

    private static QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());

    • 数据的更新操作, 可变参数的位置可以依次传递参数,也可以传递一个数组

    • qr.update(sql,Object... param)

    • DBUtils实现了查询结果自动封装到Bean Object List Map 操作,所以使得对数据库的操作变得更加简单

    query( String sql, ResultSetHandler<T> rsh, Object... params) // query的构造函数,可以传递ResultSetHandler来实现查询结果的自动封装

    • ArrayHandler // 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

    • ArrayListHandler // 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

    • BeanHandler // 将结果集中第一条记录封装到一个指定的javaBean中。

    • BeanListHandler // 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

    • ColumnListHandler // 将结果集中指定的列的字段值,封装到一个List集合中

    • ScalarHandler // 它是用于单数据。例如select count(*) from 表操作。

    • MapHandler // 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据

    • MapListHandler // 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合

    qr.query(conn, sql, new ArrayHandler(), params); // 然后返回值为对应的Handler返回的类型

    连接池

    实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池,当需要使用Connection时候,可以直接从连接池中获取Connection,当我们用完了Connection时,调用close()方法把这个Connection放回到池中,减少了系统的开销.

  • 相关阅读:
    10种 分布式ID生成方式(新增MongoDB的ObjectId)
    Spring核心接口Ordered的实现及应用 (动态切换数据源时候用到)
    No module named 'Crypto' 解决方案
    使用Anaconda管理多个版本的Python环境
    深入浅出Blazor webassembly 之API服务端保护
    [转载]HTTPS 是如何保护你的安全的
    [转载]api接口token的生成和应用
    深入浅出Blazor webassembly之HttpClient使用
    深入浅出Blazor webassembly之自定义Input组件
    深入浅出Blazor webassembly之EditForm
  • 原文地址:https://www.cnblogs.com/liyuhui-Z/p/7725434.html
Copyright © 2011-2022 走看看