JDBC连接数据库

JDBC简介

  • JDBC(Java DataBase Connectivity)是Java运行平台的核心类库中的一部分,提供了访问数据库的API
  • 我们经常使用JDBC进行如下操作:
    (1)与一个数据库建立连接
    (2)向已连接的数据库发送SQL语句
    (3)处理SQL语句返回的结果

JDBC连接数据库
JDBC连接数据库

JDBC API结构图

JDBC连接数据库

JDBC API

  • DriverManager
    DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。
  • Connection
    Connection对象代表与数据库的连接。连接过程包括所执行的SQL语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。
  • Statement
    Statement对象用于将SQL语句发送到数据库中。实际上有三种Statement对象,它们都作为在给定连接上执行SQL语句的包容器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement 继承而来)。它们都专用于发送特定类型的SQL语句:Statement对象用于执行不带参数的简单SQL语句;PreparedStatement对象用于执行带或不带IN参数的预编译SQL语句;CallableStatement对象用于执行对数据库已存储过程的调用。Statement接口提供了执行语句和获取结果的基本方法。PreparedStatement接口添加处理IN参数的方法;而CallableStatement添加处理OUT参数的方法。
  • ResultSet
    使用Statement对象执行executeQuery()方法,将会返回一个数据库的结果集。结果集一般是一个表,其中有查询所返回的列标题及相应的值。ResultSet记录集中包含符合SQL语句中条件的所有行,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供对这些行中数据的访问。ResultSet使用next方法用于移动到ResultSet中的下一行,使下一行成为当前行。

连接数据库常用方法

JDBC连接数据库

连接过程

  • 连接前准备
    下载MySql数据库的JDBC驱动程序:mysql.connector-java-5.1.6-bin.jar,复制到Tomcat安装目录下的lib文件夹中。
  • 连接数据库
    //加载JDBC驱动程序
    Class.forName(com.mysql.jdbc.Driver)
    // 提供JDBC URL
    URL = “jdbc:mysql://localhost:3306/book?user=root&password=root”
    //获取Connection对象
    conn = DriverManager.getConnection(URL)
  • 关闭连接

补充:了解数据库中的信息

  • 在和数据库建立连接后,就可以获得有关数据源的各种信息:表,列,数据类型,存储过程等。这些信息通过DatabaseMetaData类的对象上实现的。

  • DatabaseMetaData dbma=conn.getMetaData();

  • 其中提供了很多方法获取数据源的各个方面的信息,这些方法中,有一些用字符串匹配搜索模式作为参数,“_”匹配单个字符,“%”匹配0个或多个字符.一个值为null的Java String 可以与任何字符串匹配。

  • 对某些方法,有些驱动程序可能不支持,会产生一个SQLException意外。

  • 基本信息
    1.getURL()
    2.getUserName()
    3.isReadOnly()
    4.getDatabaseProduceName()
    5.getDriverName()
    6.getDriverVersion()

  • 其他
    1.getTables().getColumns().getlndexlnfo()

  • 获取结果集的信息ResultsetMetaData

1.ResultsetMetaData rsmd=rs.getMetaData();
2.getColumnCount();
3.getColumnName(int column);
4.getColumnType(int column); 返回int值
5.getColumnTypeName(int column); 返回字符串
6.isReadOnly(int column)
7.isNullable(int column)