`

(三) JDBC配置

阅读更多

3.1 数据库URL
在连接数据库时必须使用各种与数据库类型相关的参数,比如主机名、端口号和数据库名。JDBC使用了一种与普通URL相类似的语法来描述数据源。
e.g. 常用数据库URL
Derby:  jdbc:derby://localhost:1527/COREJAVA;create=true
PostgreSQL: jdbc:postgresql:COREJAVA
MySQL:  jdbc:mysql://host:port/database
Oracle:  jdbc:oracle:thin:@host:port:databse
JDBC URL的语法一般为: jdbc:subprotocol:other stuff
subprotocol用于指明连接到数据库的特定驱动程序。
other stuff参数的格式随所使用的subprotocol不同而不同。

3.2 驱动程序JAR文件
在运行访问数据库的程序时,需要将驱动程序的JAR文件包括到类路径中(编译时并不需要整个JAR文件)
从命令行启动时,只需要使用下面的命令 java -classpath .;driverJar ProgramName
通过;分号,将当前路径(由 . 字符标示的路径)与驱动程序的JAR文件分隔开。

3.3 启动数据库
数据库服务器在连接之前需要先启动
Derby数据库的启动步骤
(1)打开命令shell(linux)或cmd(windows)窗口C:\"Program Files"\Sun\JavaDB\lib
(2)找到derbyrun.jar,一般在JavaDB中(C:\Program Files\Sun\JavaDB\lib)
(3)启动服务 : java -jar derbyrun.jar server start
(4)配置文件db.properties
 ij.driver=org.apache.derby.jdbc.ClientDriver
 ij.protocol=jdbc:derby://localhost:1527/
 ij.database=DBNAME;create=true
 注意 : 只有配置文件名和database可以使用任意名
(5)在另一个shell/cmd窗口中运行Derby的交互式脚本执行工具 : java -jar derbyrun.jar ij -p db.properties
 注意 : 打开交互式执行脚本工具之后,会在derbyrun.jar所在目录下创建以配置文件中ij.database的值命名的文件夹。
(6)在打开的窗口中可以输入SQL语句,以;分号结尾。
(7)退出编辑器EXIT;
(8)关闭服务器 : java -jar derbyrun.jar server shutdown

3.4 注册驱动器类
情况一:某些JDBC的JAR文件将自动注册驱动器类(Java Standard Edition Service Provider),包含META-INF/services/java.sql.Driver文件的JAR文件可以自动注册。
e.g.Derby中lib目录下JAR包derby.jar中包含java.sql.Driver文件。该文件中"org.apache.derby.jdbc.AutoloadedDriver"为Derby的JDBC驱动程序实现名字。

情况二:如果驱动程序JAR不支持自动注册,需要找出数据库提供商使用的JDBC驱动器的名字。
典型的名字如下:
Oracle:oracle.jdbc.driver.OracleDriver
SQLServer:com.microsoft.jdbc.sqlserver.SQLServerDriver
MySQL:org.gjt.mm.mysql.Driver 或com.mysql.jdbc.Driver
注:这里实际上都是调用的com.mysql.jdbc.Driver,下面为org.gjt.mm.mysql.Driver源码

 

package org.gjt.mm.mysql;  
import java.sql.SQLException;  

public class Driver extends com.mysql.jdbc.Driver{

} 
 



DriverManager的两种注册方式
DriverManager : 管理一组JDBC驱动程序的基本服务。
(1)在JAVA程序中加载驱动器类
e.g.Class.forName("com.mysql.jdbc.Driver");
com.mysql.jdbc.Driver中得静态方法可以向DriverManager中注册了MYSQL的驱动实例。

public class Driver extends NonRegisteringDriver{
    public Driver() throws SQLException{}
    static {
        try{
            DriverManager.registerDriver(new Driver());
        }
        catch(SQLException E){
            throw new RuntimeException("Can't register driver!");
        }
    }
}
 


Mysql的Driver类实现了java.sql.Driver接口,任何数据库提供商的驱动类都必须实现这个接口。在DriverManager类中使用的都是接口Driver类型的驱动,也就是说驱动的使用不依赖于具体的实现。
在com.mysql.jdbc.Driver类中,除了构造方法,就是一个static的方法体,它调用了DriverManager的registerDriver()方法,这个方法会加载所有系统提供的驱动,并把它们都假如到具体的驱动类中。

(2)通过设置jdbc.drivers属性。
可以通过命令参数来指定这个属性
e.g.java -Djdbc.drivers=com.mysql.jdbc.Driver ProgramName
或在应用中通过调用来设置系统属性,在这种方法中可以提供多个驱动,并用冒号将他们分割
e.g.System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:oracle.jdbc.driver.OracleDriver")

 

(3)未尝试 DriverManager.registerDriver(new com.mysql.jdbc.Driver());
3.5 连接到数据库

驱动管理器遍历所有注册过的驱动程序,以便找到一个能够使用数据库URL中指定的子协议的驱动程序。
getConnection方法返回一个Connection对象。
要连接到数据库,我们还需要知道数据库的名字和口令。
注意:默认情况下Derby允许我们使用任何用户名进行连接,并且不坚持口令。它会为每个用户生成一个单独的模式,而默认的用户名是app。

package jdbc;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class ConnectionDB {

	public static void main(String[] args) {
		try {
			runTest();
		} catch (SQLException se) {
			for (Throwable t : se) {
				t.printStackTrace();
			}
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} catch (ClassNotFoundException cnfe) {
			cnfe.printStackTrace();
		}
	}

	private static void runTest() throws SQLException, IOException, ClassNotFoundException {
		Connection conn = null;
		Statement stat = null;
		try {
			conn = getConnection();
			stat = conn.createStatement();
			
			stat.executeUpdate("CREATE TABLE greetings(message varchar(20))");
			stat.executeUpdate("INSERT INTO greetings VALUES('Hello,World!')");

			ResultSet result = stat.executeQuery("SELECT message as ms FROM greetings");
			if (result.next()) {
				System.out.println(result.getString("ms"));
			}
			result.close();
			stat.executeUpdate("DROP TABLE greetings");
		} finally {
			stat.close();
			conn.close();
		}
	}

	private static Connection getConnection() throws IOException, SQLException, ClassNotFoundException {
		FileInputStream fis = null;
		try {
			File file = new File(System.getProperty("user.dir")+"/bin/database.properties");
			fis = new FileInputStream(file);
			Properties param = new Properties();
			param.load(fis);

			String drivers = param.getProperty("jdbc.drivers");
			if (drivers != null && !"".equals(drivers)) {
				System.setProperty("jdbc.drivers", drivers);
			}

//			Class.forName(drivers);
			String url = param.getProperty("jdbc.url");
			String username = param.getProperty("jdbc.username");
			String password = param.getProperty("jdbc.password");

			return DriverManager.getConnection(url, username, password);

		} finally {
			fis.close();
		}

	}
}

 

 

#MySQL
jdbc.drivers=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/corejava
jdbc.username=root
jdbc.password=12345678
#Derby
#jdbc.drivers=org.apache.derby.jdbc.AutoloadedDriver
#jdbc.url=jdbc:derby://localhost:1527/COREJAVA;create=true
#jdbc.username=dbuser
#jdbc.password=12345678
分享到:
评论

相关推荐

    jdbc配置文件

    jdbc配置文件 jdbc配置文件是Java程序连接数据库的关键配置文件。通过配置jdbc驱动,可以轻松地将Java程序与数据库连接起来,从而实现数据的存取和交互。 配置JDK环境变量 在安装JDK后,需要配置其环境变量,以便...

    图解JDBC配置数据库

    在本篇文章中,我们将深入探讨JDBC配置数据库的基本步骤,以及相关的重要概念。 ### 1. JDBC驱动类型 JDBC驱动主要有四种类型: - **类型1:JDBC-ODBC桥接驱动** - 这是最原始的驱动方式,通过JDBC-ODBC桥接器将...

    sap JDBC数据源配置

    ### SAP JDBC 数据源配置 #### 引言与目的 本文档旨在提供详细的步骤指南,用于在SAP NetWeaver 7.0 和 SAP Composite Environment (CE) 7.1 上配置 JDBC 数据源和系统。通过这些步骤,用户可以创建一个独立的数据...

    Weblogic JDBC 数据源配置和详细参数说明

    Weblogic JDBC 数据源配置和详细参数说明 一、JDBC 概述 JDBC(Java Database Connectivity)是 Java 语言中的一种标准数据库连接技术,几乎所有需要访问数据库的 J2EE 应用程序都直接或间接地使用了它。JDBC 提供...

    Spring boot连接oracle数据库JDBC配置步骤

    Spring Boot 连接 Oracle 数据库 JDBC 配置步骤 在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,...

    jdbc配置各种数据库

    ### JDBC配置各种数据库详解 #### 一、引言 在软件开发过程中,连接并操作数据库是必不可少的一个环节。Java Database Connectivity (JDBC) 是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一...

    jdbc以及配置tomcat

    在"Java数据库连接配置步骤.txt"文件中,可能详细介绍了如何配置JDBC连接,包括以下几个步骤: 1. 添加JDBC驱动JAR到项目类路径。 2. 注册JDBC驱动,通常使用`Class.forName()`方法。 3. 获取数据库连接,使用`...

    各类数据库JDBC-配置

    【数据库JDBC配置详解】 Java Database Connectivity (JDBC) 是Java平台中用于与各种数据库进行交互的一组标准API。在Java程序中,我们通过JDBC来建立与数据库的连接,执行SQL语句以及处理结果。以下是一些常见...

    JDBC配置文件

    配置SSH框架时有关JDBC的配置文件

    Tongweb5中配置JDBC连接池

    Tongweb5是一款基于Java的Web应用服务器,它支持配置JDBC连接池来管理数据库连接。本文将详细介绍如何在Tongweb5中配置JDBC连接池,以及Web应用如何通过JNDI(Java Naming and Directory Interface)查找并使用这些...

    jdbc连接池配置(优化连接速度)

    本文将详细讲解JDBC连接池的工作原理、配置方法以及如何通过优化来提升连接速度。 JDBC(Java Database Connectivity)是Java语言访问数据库的标准接口,而JDBC连接池则是一种对数据库连接进行管理和复用的技术。它...

    spring整合jdbc的配置

    Spring整合JDBC的配置 Spring框架是 Java 企业级应用开发的标准框架之一,它提供了强大的依赖注入和AOP功能,使得开发者可以更方便地进行企业级应用开发。在实际开发中,我们常常需要将Spring与JDBC集成,以便于...

    sql server 2008 r2 安装 + JDBC配置

    本人通过学习经验所总结的sql server 2008 r2 安装 + JDBC配置,如有不足望大家指出。

    Sql2005JDBC配置

    Sql2005JDBC配置涉及到几个关键步骤,包括安装驱动、配置数据库连接参数以及编写Java代码来建立连接。以下是详细的配置过程: 1. **驱动下载与安装**: 首先,你需要获取适用于SQL Server 2005的JDBC驱动。在提供...

    sharding jdbc 基于java代码的配置.zip

    本压缩包“sharding jdbc 基于java代码的配置.zip”显然提供了使用Java代码配置Sharding-JDBC的方法,下面我们将详细探讨如何进行配置以及Sharding-JDBC的核心功能和工作原理。 首先,Sharding-JDBC的工作原理是...

    JDBC参数配置

    ### JDBC参数配置详解 在Java开发中,JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问。它由一组用Java语言编写的类和接口组成,通过JDBC驱动程序连接到...

    JDBC通过配置文件连接数据库

    **JDBC通过配置文件连接数据库** Java Database Connectivity (JDBC) 是Java编程语言与各种数据库进行交互的标准API。它允许Java应用程序执行SQL语句并处理返回的结果。在实际开发中,我们经常需要通过配置文件来...

    关于Universe和IDT链接数据库的JDBC配置

    ### 关于Universe和IDT链接数据库的JDBC配置 #### 一、概述 在SAP Business Objects(BO)环境中,Universe是用于定义数据结构和业务逻辑的关键组件,而Intelligent Data Transformation (IDT)则是一种强大的工具...

    [简单]log4jdbc-log4j2配置简记

    标题中的“log4jdbc-log4j2配置简记”指的是在Java开发中使用log4jdbc-log4j2库来监控和记录SQL查询的过程。log4jdbc是一个开源项目,它允许开发者通过日志系统来追踪数据库操作,而log4j2是log4j的升级版,提供了更...

Global site tag (gtag.js) - Google Analytics