`
paladin1988
  • 浏览: 326313 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC备忘录1_JDBC入门

    博客分类:
  • JDBC
 
阅读更多

 

JDBC全称 Java Data Base Connectivity

Java数据库连接

 

JDBC API由两部分构成:

java.sql.*和javax.sql.*

java.sql.*提供JDBC基本操作的API,包括数据库连接,增删改查之类的基础API

javax.sql.*提供JDBC的高级操作,为通过Java进行服务器数据源访问和处理提供的API

 


JDBC连接数据库的基本步骤:

(1)注册驱动(只做一次);

(2)建立连接 Connection

(3)创建执行SQL的语句的对象 Statement和PreparedStatement

(4)执行sql语句

(5)处理结果集 ResultSet

(6)释放资源,关闭数据库连接

 

注册驱动的方式:

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

将class转载到虚拟机中,但是并不创建实例(newInstance才创建实例)

推荐采用这种方式,不会对具体的驱动类产生依赖;

这种方式没有显示注册驱动,而是在载入虚拟机的时候通过静态代码块的方式来实现驱动注册。详见 mysql Driver类的实现

 

        //将class装载到虚拟机中,并不创建实例
        //Class.forName("com.mysql.jdbc.Driver");

 

        //创建实例
        //Class.forName("com.mysql.jdbc.Driver").newInstance();

 

(2)DriverManager.registerDriver(new com.mysql.jdbc.Driver());

会造成DriverManager中产生两个一样的驱动(mysql Drive的实现类),并会对具体的驱动类产生依赖,因为你需要new一个具体的驱动类。

 

      DriverManager.registerDriver(new com.mysql.jdbc.Driver());

 

(3)System.setProperty("jdbc.drivers", "driver1:driver2");

虽然不会对具体的驱动类产生依赖,但注册不方便,所以很少使用。

 

//System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");

环境变量名是“jdbc.drivers”,可以注册多个驱动,多个驱动以冒号分割,多个驱动类使用Vector保存

 

DriverManager类

    private static void loadInitialDrivers() {
        String drivers;
	
        try {
	    drivers = (String) java.security.AccessController.doPrivileged(
		new sun.security.action.GetPropertyAction("jdbc.drivers"));
        } catch (Exception ex) {
            drivers = null;
        }
        
        // If the driver is packaged as a Service Provider,
        // load it.
        
        // Get all the drivers through the classloader 
        // exposed as a java.sql.Driver.class service.
	
	 DriverService ds = new DriverService();

	 // Have all the privileges to get all the 
	 // implementation of java.sql.Driver
	 java.security.AccessController.doPrivileged(ds);		
	        
         println("DriverManager.initialize: jdbc.drivers = " + drivers);
        if (drivers == null) {
            return;
        }
        while (drivers.length() != 0) {
            int x = drivers.indexOf(':');
            String driver;
            if (x < 0) {
                driver = drivers;
                drivers = "";
            } else {
                driver = drivers.substring(0, x);
                drivers = drivers.substring(x+1);
            }
            if (driver.length() == 0) {
                continue;
            }
            try {
                println("DriverManager.Initialize: loading " + driver);
                Class.forName(driver, true,
			      ClassLoader.getSystemClassLoader());
            } catch (Exception ex) {
                println("DriverManager.Initialize: load failed: " + ex);
            }
        }
    }

 

四种驱动类型:

 

1、 JDBC-ODBC bridge plus ODBC driver:        JDBC-ODBC桥驱动程序,将JDBC调用转换为ODBC的调用。( This combination provides JDBC access via ODBC drivers. ODBC binary code--and in many cases, database client code-- must be loaded on each client machine that uses a JDBC-ODBC Bridge. Sun provides a JDBC-ODBC Bridge driver, which is appropriate for experimental use and for situations in which no other driver is available.)注意, 必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。这种类型的驱动程序最适合于企业网(这种网络上客户 机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。

2、Native-API partly-Java driver:  将JDBC调用转换为对数据库客户端API的调用。(A native-API partly Java technology-enabled driver: This type of driver converts JDBC calls into calls on the client API for Oracle, Sybase, Informix, DB2, or other DBMS. Note that, like the bridge driver, this style of driver requires that some binary code be loaded on each client machine.)这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调 用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。


3、 Pure Java Driver for Database Middleware: 先将JDBC调用转换为DBMS-independent网络协议,然后由服务器端的中间件转换为具体数据库服务器可以接收的网络协议。(net- protocol fully Java technology-enabled driver #This style of driver translates JDBC calls into the middleware vendor's protocol, which is then translated to a DBMS protocol by a middleware server. The middleware provides connectivity to many different databases.)这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的 JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问,它们必须处理 Web所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。

4、 Direct-to-Database Pure Java Driver:    将JDBC调用直接转换为具体数据库服务器可以接收的网络协议。(native-protocol fully Java technology-enabled driver #This style of driver converts JDBC calls into the network protocol used directly by DBMSs, allowing a direct call from the client machine to the DBMS server and providing a practical solution for intranet access.)这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。由于许多这样的协议都是专用的,因此数 据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。

   第3、4类驱动程序将成为从JDBC访问数据库的首选方法。第1、2类驱动程序在直接的纯Java驱动程序还没有上市前将会作为过渡方案来使用。对第1、 2类驱动程序可能会有一些变种(下表中未列出),这些变种要求有连接器,但通常这些是更加不可取的解决方案。第3、4类驱动程序提供了Java的所有优 点,包括自动安装(例如,通过使用JDBC驱动程序的applet applet来下载该驱动程序)。

 

 

数据库连接的基本步骤

 

1、注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());

2、建立连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "123");

3、创建执行语句
Statement st = conn.createStatement();

4、执行语句
ResultSet rs = st.executeQuery("select * from user");

5、结果处理:
		while(rs.next()) {
			Integer id = rs.getObject(1);
			Integer name = rs.getObject(2);
			Integer birthday = rs.getObject(2);
			Integer money = rs.getObject(2);
			
			System.out.println("id = " + id + ", name = " + name + ", " 
					+ "birthday = " + birthday + ", money = " + money);
		}

 

分享到:
评论

相关推荐

    jdbc.zip_java jdbc_java+jdbc_jdbc_jdbc Java_zip

    在“jdbc.zip_java jdbc_java+jdbc_jdbc_jdbc Java_zip”这个压缩包中,我们可以看到两个关键文件:DemoClient.java和Server.java。这表明这是一个简单的Java客户端-服务器架构,其中可能涉及到使用JDBC来实现数据库...

    Sybase ASE 16.0 jdbc驱动包 jdbc4-1.6.0_03_26972.jar

    Sybase ASE 16 jdbc驱动包 jdbc4-1.6.0_03_26972.jar

    JSP+JDBC+DB.rar_ jsp jdbc_jdbc_jdbc jsp_jdbc mdb jsp_jsp jdbc

    标题"JSP+JDBC+DB.rar_ jsp jdbc_jdbc_jdbc jsp_jdbc mdb jsp_jsp jdbc"表明这是一个关于如何使用JSP和JDBC来处理数据库操作的资源包,可能包含了多种不同的数据库连接方式。描述中的“Java做的采用多种方式连接各种...

    PROGRESS_DATADIRECT_JDBC_DRIVER_PIVOTAL_GREENPLUM_5.1.4.000275.zip

    标题中的"PROGRESS_DATADIRECT_JDBC_DRIVER_PIVOTAL_GREENPLUM_5.1.4.000275.zip"是一个包含Greenplum数据库Java JDBC驱动的压缩包文件,由Progress DataDirect提供,版本号为5.1.4.000275。JDBC(Java Database ...

    JDBC_Sybase.zip_jdbc Sybase _sybase _sybase jdbc_sybase jdbc dow

    标题中的“JDBC_Sybase.zip_jdbc Sybase _sybase _sybase jdbc_sybase jdbc dow”表明这是一个关于使用Java JDBC连接Sybase数据库的资源包。这个压缩文件可能包含了示例代码、数据库文件以及相关说明文档,帮助...

    MVC_jdbc.rar_ mvc jdbc_MVC JDBC_MVC_jdbc_jdbc mvc_servlet+jdbc

    在这个"MVC_jdbc"项目中,我们看到它结合了Servlet和JDBC技术,用于实现数据库的增删改查操作。 1. **Model(模型)**:模型层是业务逻辑的承载者,负责处理数据和业务规则。在本项目中,模型层可能包含对数据库的...

    SQL Server JDBC 驱动.zip_SQL Server for JDBC_jdbc_jdbc sql _sql jd

    1. **msbase.jar**: 这个库文件包含了SQL Server JDBC驱动的基础类,提供了对基本数据库操作的支持,如连接、查询和事务处理。它实现了JDBC接口,使得Java程序员能够按照标准的JDBC方式来操作SQL Server数据库。 2....

    JDBC.rar_jdbc_同学录系统_学生通讯录_校园卡_校园卡 java

    标题中的“JDBC.rar_jdbc_同学录系统_学生通讯录_校园卡_校园卡_java”揭示了这个压缩包文件包含的内容与Java编程语言、JDBC(Java Database Connectivity)技术以及一个具体的项目应用有关,该项目涉及到同学录系统...

    JDBC+DAO.rar_DAO JDBC_java d_jdbc d_jdbc dao_留言系统

    标题"JDBC+DAO.rar_DAO JDBC_java d_jdbc d_jdbc dao_留言系统"中,关键词主要包括"JDBC"、"DAO"和"留言系统",这表明这是一个基于Java的数据库操作(JDBC)和数据访问对象(DAO)模式实现的简单留言系统。...

    dbcp.rar_Commons-jdbc.zip jar_DBCP_commons jdbc_dbcp jar_dbcp.ja

    标签中的"commons-jdbc.zip_jar dbcp commons_jdbc dbcp_jar dbcp.jar"进一步强调了Apache Commons JDBC以及DBCP的相关性。Apache Commons JDBC是一个集合,包含了多个小型的、独立的、与JDBC相关的工具和实用程序,...

    Jdbc.zip_JDBC程序_oracle_oracle jdbc

    标题中的“Jdbc.zip_JDBC程序_oracle_oracle jdbc”表明这是一个关于使用Java数据库连接(JDBC)与Oracle数据库交互的程序示例。在描述中提到,“一段Jdbc连Oracle的程序,并实现数据查询”,这暗示我们将探讨如何...

    常用_JDBC_驱动名字和_URL_列表

    标题与描述均指向了“常用_JDBC_驱动名字和_URL_列表”,这表明文章将详细介绍在Java开发中,如何通过JDBC(Java Database Connectivity)连接到各种常见的数据库系统。JDBC是Java平台上的标准数据库访问接口,允许...

    MySQL_for_JDBC,Oracle9i_for_JDBC,SQL_2000_for_JDBC,SQL_2005_for_JDBC数据库驱动架包.rar

    标题和描述中提到的"MySQL_for_JDBC"、"Oracle9i_for_JDBC"、"SQL_2000_for_JDBC"以及"SQL_2005_for_JDBC"都是针对不同数据库系统的Java JDBC驱动程序。JDBC(Java Database Connectivity)是Java编程语言中的一个...

    my-jdbc.rar_jdbc_jdbc Java_mybatis

    【标题】"my-jdbc.rar" 是一个包含与JDBC相关的资源的压缩文件,而"jdbc_jdbc Java_mybatis"的描述暗示了该文件可能是一个整合了JDBC、Java以及MyBatis技术的示例或库。这个组合旨在提供一种更高效、更灵活的数据...

    Mysql JDBC驱动 .zip_MYSQL_jdbc mysql_mysql jdbc_mysql jdbc driver_

    MySQL JDBC驱动是Java开发者在与MySQL数据库交互时不可或缺的一个组件。JDBC(Java Database Connectivity)是Java编程语言的标准API,用于连接Java应用程序和各种类型的数据库,包括MySQL。MySQL JDBC驱动,也称为...

    jdbc_2012_jdbc_tighth4l_

    标题中的"jdbc_2012_jdbc_tighth4l_" 暗示了这个压缩包与Java数据库连接(JDBC)有关,特别是在2012年,可能针对的是SQL Server 2012版本。"tighth4l"可能是某种特定的驱动或连接方式的缩写,但具体含义没有明确的...

    gt-jdbc-2.6.5.jar_oracle_jdbc_Geotools_

    总结来说,"gt-jdbc-2.6.5.jar_oracle_jdbc_Geotools_"是一个用于连接Oracle数据库并处理空间数据的JDBC驱动,它结合了Geotools的GIS功能和Oracle的数据库能力,使得开发者能够在ArcGIS环境中高效地管理和操作地理...

    JDBC.rar_jdbc_jdbc系统_销售管理系统

    在"JDBC.rar_jdbc_jdbc系统_销售管理系统"这个项目中,JDBC被用作连接和管理销售管理系统的数据库的主要工具。销售管理系统通常涉及到订单记录、客户信息、产品库存等多种数据的存储和查询,因此需要一个强大的数据...

    Server_JDBC_Driver_20_EULA_CHS

    Server_JDBC_Driver_20_EULA_CHS

    JDBCDriver3.0.rar_jdbc driver 3.0_sql jdbc 3.0_sql server jdbc_s

    首先,JDBC Driver 3.0分为四种类型:Type 1、Type 2、Type 3和Type 4。在SQL Server JDBC中,我们主要关注Type 4驱动,也称为纯Java驱动。这种驱动完全用Java编写,无需依赖数据库供应商特定的库,因此具有高度的可...

Global site tag (gtag.js) - Google Analytics