JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。

未命名文件.png

数据库驱动

Oracle数据库:
驱动程序包名:ojdbc14.jar
驱动类的名字:oracle.jdbc.driver.OracleDriver
JDBC URL:jdbc:oracle:thin:@dbip:port:databasename
说明:驱动程序包名有可能会变
JDBC URL中各个部分含义如下:
dbip –为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。
port –为数据库的监听端口,需要看安装时的配置,缺省为1521。
databasename –为数据库的SID,通常为全局数据库的名字。

SQL Server数据库
驱动程序包名:msbase.jar mssqlserver.jar msutil.jar
驱动类的名字:com.microsoft.jdbc.sqlserver.SQLServerDriver
JDBC URL:jdbc:microsoft:sqlserver://dbip:port;DatabaseName=databasename
说明:驱动程序包名有可能会变
JDBC URL中各个部分含义如下:
dbip –为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。
port –为数据库的监听端口,需要看安装时的配置,缺省为1433。
databasename –数据库的名字。

MySQL数据库
驱动程序包名:mysql-connector-java-3.1.11-bin.jar
驱动类的名字:com.mysql.jdbc.Driver
JDBC URL:jdbc:mysql://dbip:port/databasename
说明:驱动程序包名有可能会变
JDBC URL其中各个部分含义如下:
dbip –为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。
port –为数据库的监听端口,需要看安装时的配置,缺省为3306。
databasename –数据库的名字。

JDBC连接步骤

1.加载驱动
2.连接数据库
3.获取执行sql的对象, Statement
4.执行Sql, 查看返回结果
5.释放连接

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. import static java.lang.Class.forName;
  7. public class TestJDBC {
  8. public static void main(String[] args) throws SQLException, ClassNotFoundException {
  9. //1.加载驱动
  10. Class.forName("com.mysql.jdbc.Driver"); //固定写法,加载驱动
  11. //2.连接数据库
  12. String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
  13. String username = "root";
  14. String password = "123456";
  15. Connection connection = DriverManager.getConnection(url,username,password);
  16. //3.获取执行sql的对象, Statement
  17. Statement statement = connection.createStatement();
  18. //4.执行Sql, 查看返回结果
  19. String sql = "Select * from users";
  20. ResultSet resultSet = statement.executeQuery(sql);
  21. while(resultSet.next()){
  22. System.out.println(resultSet.getObject("id"));
  23. }
  24. //5.释放连接
  25. resultSet.close();
  26. statement.close();
  27. connection.close();
  28. }
  29. }

Statement对象

查询操作

  1. con.executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。

更新操作

  1. executeUpdate :用于执行 INSERTUPDATE DELETE 语句以及 SQLDDL(数据定义语言)语句
  1. execute:用于执行返回多个结果集、多个更新计数或二者组合的语句

PrepaedStatement对象

继承自Statement, 能防止SQL注入的问题
本质,将传入的参数整个当人一个字符串对待, 有转义符直接修改

JDBC操作事务

1.开启事务
2.一组业务执行完毕, 提交事务
3.可以在catch语句中显示的定义,回滚语句, 但时期默认失败就会回滚
image.png