7.jdbc

来源:互联网 发布:docker nginx负载均衡 编辑:程序博客网 时间:2024/06/11 18:00

1.理解

  • java操作数据库.jdbc是oracle公司指定的一套规范(一套接口)
  • 驱动:jdbc的实现类.由数据库厂商提供.
  • jdbc作用:
    • 连接数据库
    • 发送sql语句
    • 处理结果

2. jdbc操作步骤:

  1. 数据库和表
  2. 创建一个项目
  3. 导入驱动jar包(mysql-connector-java-5.1.39-bin.jar)
    • 新建一个目录lib,将包放在此目录下
    • 选中驱动右键,build path
  4. 编码:

    • 注册驱动

      Class.forName("com.mysql.jdbc.Driver");

    • 获取连接

      static Connection getConnection(String url, String user, String password) 参数1:告诉我们连接什么类型的数据库及连接那个数据库协议:数据库类型:子协议 参数    mysql:  jdbc:mysql://localhost:3306/数据库名称    oracle: jdbc:oracle:thin@localhost:1521@实例参数2:账户名 root参数3:密码Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/day07", "root", "123456");
    • 编写sql

      String sql = "select * from category";

    • 创建预编译的语句执行者

      PreparedStatement st = conn.prepareStatement(sql);

    • 设置参数
    • 执行sql
      ResultSet rs = st.executeQuery();
    • 处理结果

      while(rs.next()){        System.out.println(rs.getString("cid") + "::" + rs.getString("cname"));    }
    • 释放资源
      //先打开的后关闭
      rs.close();
      st.close();
      conn.close();

3. jdbc-api详解:

  • 所有的包 都是 java.sql 或者 javax.sql

3.1 DriverManager:管理了一组jdbc的操作 类

`DriverManager.registerDriver(new Driver());`

3.2 Driver:java.sql 接口 驱动

Connection:连接 接口

3.2.1 常用方法:
获取语句执行者:
    Statement createStatement() :获取普通的语句执行者  会出现sql注入问题    ★PreparedStatement prepareStatement(String sql) :获取预编译语句执行者    (了解)CallableStatement prepareCall(String sql):获取调用存储过程的语句执行者    setAutoCommit(false) :手动开启事务    commit():提交事务    rollback():事务回滚

3.3 Statement:语句执行者 接口

PreparedStatement:预编译语句执行者 接口

3.3.1 常用方法:
设置参数:    setXxx(int 第几个问号,Object 实际参数);    常见的方法:         setInt         setString         setObject执行sql:     ResultSet executeQuery() :执行 r 语句 返回值:结果集     int executeUpdate() :执行cud 语句 返回值:影响的行数

3.4 ResultSet:结果集 接口

执行查询语句之后返回的结果

3.4.1 常用方法:
boolean next():判断是否有下一条记录,若有返回true且将光标移到下一行,若没有呢则返回false    光标一开始处于第一条记录的上面获取具体内容    getXxx(int|string)        若参数为int :第几列        若参数为string:列名(字段名)    例如:        获取cname的内容可以通过            getString(2)            getString("cname")    常用方法:        getInt        getString 也可以获取int值        getObject 可以获取任意

4. 将类加载到内存中:

方式1:    Class.forName("全限定名");//包名+类名   com.mysql.jdbc.Driver方式2:    类名.class;方式3:    对象.getClass();

5. 配置文件

5.1 常见的配置文件格式

  1. properties:里面内容的格式 key=value
  2. xml

5.2 获取配置文件

若我们的配置文件为properties,并且放在src目录下.我们可以通过 ResourceBundle工具快速获取里面的配置信息

使用步骤:
1.获取ResourceBundle 对象:    static ResourceBundle getBundle("文件名称不带后缀名") 2.通过ResourceBundle 对象获取配置信息     String getString(String key) :通过执行key获取指定的value

6. 连接池

6.1 连接池概述:管理数据库的连接

作用:
提高项目的性能.就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接即可.所有的连接池必须实现一个接口 javax.sql.DataSource接口
获取连接方法:
Connection getConnection() 归还连接的方法就是以前的释放资源的方法.调用connection.close();

6.2 常用连接池:

DBCPC3P0
6.2.1 DBCP:

apache组织

使用步骤:
1.导入jar包(commons-dbcp-1.4.jar和commons-pool-1.5.6.jar)2.使用api    a.硬编码        //创建连接池        BasicDataSource ds = new BasicDataSource();        //配置信息        ds.setDriverClassName("com.mysql.jdbc.Driver");        ds.setUrl("jdbc:mysql:///day07");        ds.setUsername("root");        ds.setPassword("1234");    b.配置文件        实现编写一个properties文件        //存放配置文件        Properties prop = new Properties();        prop.load(new FileInputStream("src/dbcp.properties"));        //设置        //prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");        //创建连接池        DataSource ds = new BasicDataSourceFactory().createDataSource(prop);
6.3 C3P0:

hibernate和spring使用,有自动回收空闲连接的功能.

使用步骤:
1.导入jar包(c3p0-0.9.1.2.jar)2.使用api    a.硬编码(不推荐)        new ComboPooledDataSource()    b.配置文件        配置文件的名称:c3p0.properties 或者 c3p0-config.xml        配置文件的路径:src下        编码只需要一句话            new ComboPooledDataSource()//使用默认的配置            new ComboPooledDataSource(String configName)//使用命名的配置 若配置的名字找不到,使用默认的配置

dbutils

是apache组织的一个工具类,jdbc的框架,更方便我们使用

使用步骤:

1.导入jar包(commons-dbutils-1.4.jar)2.创建一个queryrunner类    queryrunner作用:操作sql语句        构造方法:            new QueryRunner(Datasource ds);3.编写sql4.执行sql    query(..):执行r操作    update(...):执行cud操作

核心类或接口

QueryRunner:类名
- 作用:操作sql语句
- 构造器:

new QueryRunner(Datasource ds);

注意:底层帮我们创建连接,创建语句执行者 ,释放资源.

常用方法:
query(..):update(..):DbUtils:释放资源,控制事务 类closeQuietly(conn):内部处理了异常commitAndClose(Connection conn):提交事务并释放连接....
ResultSetHandler:封装结果集 接口
 ArrayHandler, ArrayListHandler, BeanHandler, BeanListHandler, ColumnListHandler, KeyedHandler, MapHandler, MapListHandler, ScalarHandler (了解)ArrayHandler, 将查询结果的第一条记录封装成数组,返回 (了解)ArrayListHandler, 将查询结果的每一条记录封装成数组,将每一个数组放入list中返回 ★★BeanHandler, 将查询结果的第一条记录封装成指定的bean对象,返回 ★★BeanListHandler, 将查询结果的每一条记录封装成指定的bean对象,将每一个bean对象放入list中 返回. (了解)ColumnListHandler, 将查询结果的指定一列放入list中返回  (了解)MapHandler, 将查询结果的第一条记录封装成map,字段名作为key,值为value 返回 ★MapListHandler, 将查询结果的每一条记录封装map集合,将每一个map集合放入list中返回 ★ScalarHandler,针对于聚合函数 例如:count(*) 返回的是一个Long值

修改控件字符集

修改字体大小

原创粉丝点击