`
toreking
  • 浏览: 36899 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java JDBC

    博客分类:
  • java
阅读更多

 Java JDBC 连接Oracle和MySql数据库

 

    本文是通过Java JDBC连接Oracle和MySql数据库,其中用到了使用properties配置文件,所以在ConnectionFactory中java.util.Properties解析db-conn-config.properties配置文件。

 

1.首先看看db-conn-param.properties的写法:

#######################Oracle###########################
oracle.driver: oracle.jdbc.driver.OracleDriver
oracle.url: jdbc:oracle:thin:@localhost:1521:xcz
oracle.username: scott
oracle.password: tiger
#######################Oracle###########################


######################MYSQL#############################
mysql.driver = com.mysql.jdbc.Driver
mysql.url = jdbc:mysql://localhost:3306/mysql         
mysql.username = root   
mysql.password = xcz   
######################MYSQL#############################

 

注意:

    * "oracle.jdbc.driver.OracleDriver" 等字符串前后面不可以有空格,否则会出现找不到驱动或用户名、密码错误等异常。

    * properties 中字符串写入形式如同键值对,所以可以同上使用“=”或“:”把key与value隔开。

    * properties 中value字符串不能使用引号包裹。

 

2.创建ConnectionFactory:

 

package com.orcl.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.UUID;

public class ConnectionFactory {
	
	/**
	 * 驱动
	 */
	private String driver;
	
	/**
	 * 连接字符串
	 */
	private String url;
	
	/**
	 * 数据库登录用户名称
	 */
	private String username;
	
	/**
	 * 数据库登录密码
	 */
	private String password;
	
	private String db;
	
	/**
	 * 常量代表"ORACLE"
	 */
	public final static String ORACLE_DB = "oracle";
	
	/**
	 * 常量代表"MYSQL"
	 */
	public final static String MYSQL_DB = "mysql";	
	
	/**
	 * 单例模式 获取一个数据库连接工厂
	 */
	private static ConnectionFactory connFactory = null;
	
	public static synchronized ConnectionFactory getConnFactoryInstance(String db){
		if(connFactory == null){
			connFactory = new ConnectionFactory(db);
		}
		return connFactory;
	}
	
	private ConnectionFactory(String db){
		try {
			initOrclParams(db);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 通过配置文件获取数据库连接参数
	 * @param db 数据库名称
	 * @throws IOException
	 */
	private void initOrclParams(String db) throws IOException{
		Properties properties = new Properties();

		InputStream in = new FileInputStream(new File("db-conn-config.properties"));
		properties.load(in);
	
		if(db.equals(ORACLE_DB))
		{
			getParams(properties,db);
		}
		else if(db.equals(MYSQL_DB))
		{
			getParams(properties,db);
		}
	}
	
	/**
	 * 根据数据库名获取相应的参数
	 * @param p Properties
	 * @param db 
	 */
	private void getParams(Properties p,String db){
		//注意:如果不用trim(),这样properties文件中的字符串后面不能有空格,否则会出错
		driver = p.getProperty(db + ".driver").trim();
		url = p.getProperty(db + ".url").trim();
		username = p.getProperty(db + ".username").trim();
		password = p.getProperty(db + ".password").trim();
	}
	
	/**
	 * 获取连接对象
	 * @param db 连接的数据库名 取值于ConnectionFactory中的常量:ORCL_DB/MYSQL_DB
	 * @return
	 */
	public Connection getConn()
	{
		Connection conn = null;
		
		try 
		{
			Class.forName(driver);
			conn = DriverManager.getConnection(url, username, password);
			// 设置不自动提交
			conn.setAutoCommit(false);
		} 
		catch (ClassNotFoundException e) 
		{
			e.printStackTrace();
		} 
		catch (SQLException e) 
		{
			e.printStackTrace();
		} 
		
		return conn;
	}

	/**
	 * 关闭操作
	 * @param conn
	 * @param pst
	 * @param rs
	 */
	public static void close(Connection conn, PreparedStatement pst, ResultSet rs) {
		try {
			if (rs != null) {
				rs.close();
			}
			if (pst != null) {
				pst.close();
			}
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 获取UUID
	 * @return
	 */
	public String getUUID() {
		return UUID.randomUUID().toString();
	}
	
	public void setPassword(String password) {
		this.password = password;
	}
	
	public String getDriver() {
		return driver;
	}

	public void setDriver(String driver) {
		this.driver = driver;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public String getDb() {
		return db;
	}

	public void setDb(String db) {
		this.db = db;
	}

}

 

3.测试:

 

	@Test
	public void test() {
		ConnectionFactory factory = ConnectionFactory.getConnFactoryInstance(ConnectionFactory.ORACLE_DB);
		Connection conn = factory.getConn();
		try {
			PreparedStatement pst = conn.prepareStatement("select * from emp");
			java.sql.ResultSet rs = pst.executeQuery();
			while (rs.next()) {
				System.out.println(rs.getString(2));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

 附录:

    关于properties,生产xml,并从其中解析出来的应用

            Properties prop = new Properties();
            prop.setProperty("ONE", "1");
            prop.setProperty("TWO", "2");
            prop.setProperty("THREE", "3");
            prop.setProperty("FOUR", "4");
            File f = new File("temp.xml");
        	
        	if(!f.exists()){
        		f.createNewFile();
        	}
            OutputStream stream = new FileOutputStream(f);
            prop.storeToXML(stream, null);
            stream.close();  

 

 

    解析:

            Properties p = new Properties();
            p.loadFromXML(new FileInputStream(f));
            System.out.println(p.get("ONE"));
            System.out.println(p.getProperty("TOW"));
           
            p.list(System.out);

      还有许多其他捷径方法,待应用后总结......
           

 

  • 大小: 41.1 KB
分享到:
评论

相关推荐

    java jdbc 需要包

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。它提供了一种标准化的方法,让程序员可以使用SQL语句访问数据库,而无需关心具体的数据库实现细节。在Java应用...

    Java JDBC学生数据管理系统

    Java JDBC学生数据管理系统是一个利用Java编程语言和JDBC(Java Database Connectivity)技术设计的应用,用于高效管理和操作学生数据。这个系统提供了用户友好的界面,使得用户可以方便地执行SQL(Structured Query...

    jdbc.zip_java jdbc_java+jdbc_jdbc_jdbc Java_zip

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种关系数据库进行交互的一组接口和类。它作为标准API,允许开发人员通过编写Java代码来访问和操作数据库,无需了解数据库特定的SQL语法或者驱动...

    Java jdbc

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种关系数据库进行交互的一组标准API。JDBC使得Java开发者能够编写可移植的数据库应用程序,无需针对不同数据库系统编写不同的代码。JDBC的核心是一...

    java jdbc连接sqlserver所需要的jar包

    Java JDBC(Java Database Connectivity)是Java语言中用于与数据库交互的一种技术,它为开发者提供了一种标准的方法来访问各种类型的数据库。在Java中连接SQL Server数据库时,你需要一个特定的驱动程序,通常是一...

    Java JDBC规范和用例

    ### Java JDBC规范详解 #### 一、概述与背景 JDBC,即Java Database Connectivity,是Java平台中一种标准的数据访问技术,它允许Java程序通过一套统一的API接口访问各种关系型数据库。JDBC的出现解决了Java应用与...

    javajdbc

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。它是Java标准版(Java SE)的一部分,允许Java开发者执行SQL语句并处理结果。在深入探讨Java JDBC之前,先要理解...

    完美的java jdbc连接池实例

    Java JDBC 连接池是Java开发中非常关键的一部分,它能有效地管理数据库连接,提高应用程序的性能和效率。本实例提供了完美的Java JDBC连接池配置,适用于Oracle、MySQL和SQL Server等主流数据库,允许开发者轻松地在...

    JAVA JDBC教程.zip_zip怎么打开

    **JAVA JDBC教程** Java JDBC(Java Database Connectivity)是Java平台中的一个标准API,它允许Java应用程序连接到各种类型的数据库,实现数据的存取和处理。JDBC为开发者提供了一种统一的方式来访问不同的数据库...

    javaJDBC编程.ppt

    javaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.ppt

    java jdbc odbc 桥连接包

    java jdbc odbc 桥连接包 如何实现JDBC-ODBC桥连接到Access

    最全的javaJDBC--BaseDao

    最全的javaJDBC技术的BaseDao,相当于框架封装了,引用之后直接调用其中的方法传递参数以及sql语句就可以使用了。

    javajdbc宠物商店-Mysql数据库_Java项目jdbc_java宠物项目_数据库代码_

    本项目"javajdbc宠物商店-Mysql数据库"是基于Java JDBC实现的一个宠物商店管理系统的数据库部分,它提供了与MySQL数据库交互的能力。在这个项目中,我们将深入探讨以下几个核心知识点: 1. **JDBC API**: JDBC API...

    jdbc-oracle.rar_JDBC ORACLE_java JDBC orac_java jdbc oracle_jdbc

    在Java编程语言中,JDBC(Java Database Connectivity)是一个用于与各种数据库进行交互的标准接口。JDBC提供了一套规范,使得Java程序员可以使用统一的方法来访问数据库,包括Oracle数据库。Oracle是世界上最流行的...

    java jdbc连接Oracle的小例子

    Java JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,它提供了标准的API,使得Java程序员能够使用SQL语句来访问数据库。本篇将通过一个小型示例,详细介绍如何...

    java jdbc 驱动下载

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。它是Java平台标准的一部分,允许开发人员编写数据库独立的代码,使得Java应用程序能够连接到不同类型的数据库,...

    Java JDBC 编程知识全面总结 一张图搞定!

    全面的 Java JDBC 编程学习知识总结 一张图搞定! 结构性强,便于记忆! 资源博客:https://blog.csdn.net/CodeYearn/article/details/89196038

    mysql8.0,java jdbc驱动.zip

    Java JDBC(Java Database Connectivity)驱动则是Java程序与各种数据库进行交互的标准接口,使得Java开发者能够方便地访问和操作数据库。在本压缩包中,我们可能找到了用于连接MySQL 8.0的Java JDBC驱动,这将帮助...

    sqlite jdbc jar java jdbc 链接 sqlite sqlite-jdbc-3.8.11.1.jar

    SQLite JDBC 是一个开源的 Java 驱动程序,允许 Java 应用程序通过 JDBC API 连接到 SQLite 数据库。SQLite 是一个轻量级、自包含的数据库引擎,无需单独的服务器进程,非常适合嵌入式应用或者对小型项目的数据存储...

    Java JDBC驱动大全

    Java JDBC(Java Database Connectivity)是Java平台中用于与数据库交互的一组接口和类,它使得开发者可以使用标准的Java API来访问各种类型的数据库系统。在Java应用中,JDBC驱动扮演着桥梁的角色,将Java程序与...

Global site tag (gtag.js) - Google Analytics