MySQL数据库 -- JDBC编程

面试常问:

1. 数据库连接有哪些方式? 分别有什么区别

2. 数据库Statement和PreparedStatement有什么区别?

1.Java的数据库编程: JDBC

JDBC, 即java Datebase Connectivity, java数据库连接. 是一种用于执行SQL语句的java API, 它是java中的数据库连接规范. 这个API由java.sql.*, javax.sql.*包中的一些类和接口组成, 它为java开发人员操作数据库提供了一个标准的API, 可以为多种关系数据库提供统一访问.

2.JDBC使用步骤:

1. 创建数据库连接Connection

        DriverManager()创建

        DataSource获取

2.创建操作命令Statement

        PreparedStatement

3.使用操作命令来执行SQL

    查询操作

preparedStatement.executeQuery();

    新增, 修改, 删除操作

preparedStatement.executeUpdate();

4.处理结果集ResultSet

while (resultSet.next()) {
      int id = resultSet.getInt("id");
      String sn = resultSet.getString("sn");
      String name = resultSet.getString("name");
      int classesId = resultSet.getInt("classes_id");
      System.out.println(String.format("Student: id=%d, sn=%s, name=%s, classesId=%s", id, sn, name, classesId));
   }

5.释放资源(关闭结果集, 命令, 连接)

//关闭结果集
if (resultSet != null) {
  try {
    resultSet.close();
  } catch (SQLException e) {
    e.printStackTrace();
  }
}
//关闭命令
if (statement != null) {
  try {
    statement.close();
  } catch (SQLException e) {
    e.printStackTrace();
  }
}
//关闭连接命令
if (connection != null) {
  try {
    connection.close();
  } catch (SQLException e) {
    e.printStackTrace();
  }
}

3.JDBC常用接口和类

1.数据库连接 Connection

Connection接口实现类由数据库提供, 获取Connection对象通常有两种方式:

(1) 通过DriverManager(驱动管理类)的静态方法获取:

(2) 通过DataSource(数据源) 对象获取. 实际应用中会使用DataSource对象.

以上两种方式的区别:

    1. DriverManager类来获取的Connection连接, 是无法重复利用的, 每次使用完以后释放资源时, 通过connection.close()进行关闭物理连接.

    2. DataSource提供连接池的支持. 连接池在初始化时将创建一定数量的数据库连接, 这些连接是可以复用的, 每次使用完数据库连接, 释放资源调用connection.close()将Connection连接对象回收.

2.Statement对象

Statement对象主要是将SQL语句发送到数据库中, JDBC API中主要提供了三种Statement对象.

Statement: 

      用于执行不带参数的简单SQL语句

PreparedStatement:  

      用于执行带或不带参数的SQL语句

      SQL语句会预编译在数据库系统

      执行速度快于Statement对象

CallableStatement:

      用于执行数据库存储过程中的调用

 

实际开发中最常用的是PreparedStatement对象, 以下是对它的总结

1. 参数化SQL查询

2. 性能比Statement高

3. SQL预编译

4. 阻止常见SQL注入攻击

5. 占位符: ? 下标从1开始

6. 占位符不能使用多值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值