黑马程序员技术交流社区

标题: JDBC技术 [打印本页]

作者: lily    时间: 2011-10-9 13:35
标题: JDBC技术
在JAVA程序中,连接数据库采用JDBC技术。JDBC是由与平台无关的数据库连接标准,他将数据库访问封装在少数几个方法内,使用户可以极其方便地查询数据库、插入新的数据、更改数据。
那么,JDBC有什么功能和特点。它具体是如何工作的?
作者: 欧阳超    时间: 2011-10-9 13:41
创建指定数据库的URL这个URL实际上还是统一资源定位器,里面包含了一些连接数据库的信息:数据库类型、端口、驱动类型、连接方式、数据库服务器的ip(或名字)、数据库名(有的是别名)等。其格式如下:

    jdbc:subProtocol:subName://DBserverIP:port/DatabaseName例如mysql的一个url:jdbc:mysql://192.168.3.143:3306/zfvims

    2、加载驱动类到JVM内存区域中有两种方法:一种是用Class.forName()方法加载指定的驱动程序。

    一种是将驱动程序添加到java.lang.System的属性jdbc.drivers中。

    最后说明一点,有时候添加到系统的CLASSPATH环境变量是不行的,原因是在使用JDBC接口操作数据库前,JVM还没有加载上驱动。

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

    3、、通过DriverManager类管理驱动、创建数据库连接。

    DriverManager类作用于程序员和JDBC驱动程序之间,提供注册管理驱动建立连接细节等方法,它所有成员均为静态的。通过其getConnection方法会创建一个JDBC Connection对象。

    Connection conn=DriverManager.registerDriver("jdbc:mysql://192.168.3.143:3306/zfvims","lavasoft","password");

    4、Connection类——数据库连接这里所说的Connection类实际上是实现了JDBC的Connection接口的类,这个类一般都是jdbc驱动程序实现了。Connection类表示了数据库连接,通过其对象可以获取一个获取数据库和表等数据库对象的详细信息。但更多的是通过这个连接更进一步去向数据库发送SQL语句去执行,下面会讲到。

    数据库的连接的建立是很耗费资源和时间的,因此在不用连接的情况下要通过其close()方法将连接关闭,以释放系统资源。

    5、Statement类——发送并执行(静态)SQL语句通过Connection对象的createStatement()方法可以创建一个Statement对象,通过该对象的方法可以(发送)并执行一个静态sql语句。如果要执行动态的sql(sql串中有参数),那么就用PreparedStatement类,用法和Statement类似。

    Statement stmt=con.createStatement()

    6、ResultSet类——结果集当你执行一条sql查询后,就会产生一个查询结果。ResultSet就表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSet 对象具有指向其当前数据行的指针。通过ResultSet对象不但可以结果集数据,还可以获取结果集表的列名、数据类型等信息。

    ResultSet rs=stmt.executeQuery(sql)

    7、关闭数据库连接当对sql操作完成后,应该关闭数据库连接,这样避免因为连接未关闭而耗费系统资源,如果每次都不关闭,多次操作将建立多个连接,最终数据库连接会达到最大限度,或者耗尽系统的资源,从而导致应用崩溃。因此要注意关闭资源,尤其是数据库连接。


作者: 林国锋    时间: 2011-10-9 13:50
JDBC是MYSQL公司用JAVA语言对MYSQL数据库操作的封装
下面是一段JDBC连接数据的数据库工厂,连接以后就可以进行CRUD的操作了
  1. package com.linguofeng.factory;

  2. import java.sql.Connection;
  3. import java.sql.SQLException;
  4. import org.apache.commons.dbcp.BasicDataSource;

  5. public class ConnectionFactory {
  6.         private static BasicDataSource bds = new BasicDataSource();
  7.         static {
  8.                 bds.setDriverClassName("com.mysql.jdbc.Driver");
  9.                 bds.setUrl("jdbc:mysql://127.0.0.1/mysql");
  10.                 bds.setUsername("root");
  11.                 bds.setPassword("root");
  12.                 bds.setMaxActive(2000);
  13.                 bds.setMaxIdle(20);
  14.                 bds.setMaxWait(5000);
  15.         }

  16.         public ConnectionFactory() {
  17.         }

  18.         public static java.sql.Connection getConnection() {
  19.                 java.sql.Connection con = null;
  20.                 try {
  21.                         con = bds.getConnection();
  22.                 } catch (SQLException e) {
  23.                         e.printStackTrace();
  24.                 }
  25.                 return con;
  26.         }

  27.         public static void close(java.sql.Connection con, java.sql.Statement stm,
  28.                         java.sql.ResultSet rs) {
  29.                 try {
  30.                         if (rs != null) {
  31.                                 rs.close();
  32.                                 rs = null;
  33.                         }
  34.                         if (stm != null) {
  35.                                 stm.close();
  36.                                 stm = null;
  37.                         }
  38.                         if (con != null) {
  39.                                 con.close();
  40.                                 con = null;
  41.                         }

  42.                 } catch (Exception e) {
  43.                         e.printStackTrace();
  44.                 }
  45.         }

  46.         public static void main(String[] args) {
  47.                 //  使用方法
  48.                 Connection con = ConnectionFactory.getConnection();
  49.                 System.out.println(con);
  50.         }
  51. }
复制代码

作者: Lop_adoule    时间: 2013-8-20 18:52
技术分怎么拿啊? 求指导。
作者: 剪爱    时间: 2014-5-10 16:38
欧阳超 发表于 2011-10-9 13:41
创建指定数据库的URL这个URL实际上还是统一资源定位器,里面包含了一些连接数据库的信息:数据库类型、端口 ...

看看别人
作者: 剪爱    时间: 2014-5-10 16:39
Lop_adoule 发表于 2013-8-20 18:52
技术分怎么拿啊? 求指导。

去技术论坛上发表技术文章
作者: huilly    时间: 2015-9-4 23:05
林国锋 发表于 2011-10-9 13:50
JDBC是MYSQL公司用JAVA语言对MYSQL数据库操作的封装
下面是一段JDBC连接数据的数据库工厂,连接以后就可以 ...

支持一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2