Java 连接多种数据库

概要:

本实例将介绍连接数据库的方法。以MySQL数据库为例,首先实现了一个通用的方法,然后针对不同类型的数据库的特点,实现了更方便的连接数据库的方法。在运行实例前,需要先建立一个MySQL数据库。SQL脚本如下:

create database myuser;

GRANT all on myuser.*to root@127.0.0.1 IDENTIFIED BY'root';

此SQL语句的作用是创建了名字为myuser的数据库,并可以用root账户访问该数据库,访问密码也是root。本实例就以刚创建的myuser数据库为例。

| |目录

技术要点

连接数据库的技术要点如下:

  • 为数据连接注册驱动程序,如Class.forName("com.mysql.jdbc.Driver")。

  • 根据数据库的URL、用户名和密码创建数据库连接,如Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/myuser","root","root")。

  • 通过Connection对象的createStatement方法创建Statement或它的子类,如Statement st=con.createStatement()。

  • 创建Statement之后,就可以使用Statement的对象调用executeQuery(String sql)方法执行查询sql语句。

  • 调用close()来关闭Statement对象和Connection对象。

准备工作

连接数据库时需要对应数据库的jar包,连接mysql数据库的jar包地址如下:mysql-connector-java-5.0.8.jar

代码实现

package net.xsoftlab.baike;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBC_Conntion {
	// 获得数据库连接
	public static Connection getConnection(String driverClassName,
			String dbURL, String userName, String password)
			throws ClassNotFoundException, SQLException {
		Connection con = null;
		// 加载连接数据库的驱动类
		Class.forName(driverClassName);
		// 用用户名、密码连接数据库
		con = DriverManager.getConnection(dbURL, userName, password);
		return con;
	}
	// 获得Oracle数据库的连接
	public static Connection getOracle_Con(String dricerClassName,
			String serverHost, String serverPort, String dbName,
			String userName, String password) throws ClassNotFoundException,
			SQLException {
		// 如果没有提供这些连接参数,则用默认值
		if (dricerClassName == null) {
			dricerClassName = "oracle.jdbc.driver.OracleDriver";
		}
		if (serverHost == null) {
			serverHost = "127.0.0.1";
		}
		if (serverPort == null) {
			serverPort = "1521";
		}
		// 构建访问Oracle数据库的URL
		String dbURL = "jdbc:oracle:thin:@" + serverHost + ":" + serverPort
				+ ":" + dbName;
		return getConnection(dricerClassName, dbURL, userName, password);
	}
	// 获得DB2数据库的连接
	public static Connection getDB2_Con(String dricerClassName,
			String serverHost, String serverPort, String dbName,
			String userName, String password) throws ClassNotFoundException,
			SQLException {
		// 如果没有提供这些连接参数,则用默认值
		if (dricerClassName == null) {
			dricerClassName = "com.ibm.db2.jdbc.app.DB2Driver";
		}
		if (serverHost == null) {
			serverHost = "127.0.0.1";
		}
		if (serverPort == null) {
			serverPort = "5000";
		}
		// 构建访问DB2数据库的URL
		String dbURL = "jdbc:db2://" + serverHost + ":" + serverPort + "/"
				+ dbName;
		return getConnection(dricerClassName, dbURL, userName, password);
	}
	// 获得SQL Server数据库的连接
	public static Connection getsqlServer_Con(String dricerClassName,
			String serverHost, String serverPort, String dbName,
			String userName, String password) throws ClassNotFoundException,
			SQLException {
		// 如果没有提供这些连接参数,则用默认值
		if (dricerClassName == null) {
			dricerClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
		}
		if (serverHost == null) {
			serverHost = "127.0.0.1";
		}
		if (serverPort == null) {
			serverPort = "1433";
		}
		// 构建访问SQL Server数据库的URL
		String dbURL = "jdbc:microsoft:sqlserver://" + serverHost + ":"
				+ serverPort + ";DatabaseName=" + dbName;
		return getConnection(dricerClassName, dbURL, userName, password);
	}
	// 获得MySQL数据库的连接
	public static Connection getmysql_Con(String dricerClassName,
			String serverHost, String serverPort, String dbName,
			String userName, String password) throws ClassNotFoundException,
			SQLException {
		// 如果没有提供这些连接参数,则用默认值
		if (dricerClassName == null) {
			dricerClassName = "com.mysql.jdbc.Driver";
		}
		if (serverHost == null) {
			serverHost = "127.0.0.1";
		}
		if (serverPort == null) {
			serverPort = "3306";
		}
		// 构建访问SQL Server数据库的URL
		String dbURL = "jdbc:mysql://" + serverHost + ":" + serverPort + "/"
				+ dbName;
		return getConnection(dricerClassName, dbURL, userName, password);
	}
	// 获得Sybase数据库的连接
	public static Connection getsybase_Con(String dricerClassName,
			String serverHost, String serverPort, String dbName,
			String userName, String password) throws ClassNotFoundException,
			SQLException {
		// 如果没有提供这些连接参数,则用默认值
		if (dricerClassName == null) {
			dricerClassName = "com.sybase.jdbc3.jdbc.SybDriver";
		}
		if (serverHost == null) {
			serverHost = "127.0.0.1";
		}
		if (serverPort == null) {
			serverPort = "5007";
		}
		// 构建访问SQL Server数据库的URL
		String dbURL = "jdbc:sybase:Tds:" + serverHost + ":" + serverPort + "/"
				+ dbName;
		return getConnection(dricerClassName, dbURL, userName, password);
	}
	public static void main(String[] args) throws ClassNotFoundException,
			SQLException {
		String mysql_Dirver = "com.mysql.jdbc.Driver";
		String dateBase = "myuser";
		String userName = "root";
		String password = "123456";
		Connection con = JDBC_Conntion.getmysql_Con(mysql_Dirver, null, null,
				dateBase, userName, password);
		System.out.println("通过getmysql_Con连接方法:");
		System.out.println("****MySQL数据库连接成功!*****");
		con.close();
		System.out.println("######成功关闭MySQL数据库!#####
");
		System.out.println("通过getConnection连接方法:");
		String url = "jdbc:mysql://127.0.0.1:3306/" + dateBase;
		con = getConnection(mysql_Dirver, url, userName, password);
		System.out.println("@@@@@@@连接MySQL数据库成功!@@@@@@@@");
		con.close();
		System.out.println("$$$$$$$$成功关闭与MySQL数据库的连接!$$$$$$$");
	}
}

程序解读

  • getConnection方法是连接数据库最通用的方法,用户提供数据库的驱动类、数据库的URL、用户名和密码,便可以获得数据库的连接。

  • getOracle_Con方法获得Oracle数据库的连接,用户提供数据库的驱动类、数据库服务的IP地址(域名)、数据库服务的端口、数据库名、用户名和密码,便可以获得与Oracle数据库的连接。Oracle的驱动程序为oracle.jdbc.driver.OracleDriver,默认的数据库端口为1521。

  • getDB2_Con方法获得DB2数据库的连接,用户提供数据库的驱动类、数据库服务的IP地址(域名)、数据库服务的端口、数据库名、用户名和密码,便可以获得与DB2数据库的连接。DB2的驱动程序为com.ibm.db2.jdbc.app.DB2Driver,默认的数据库端口为5000。

  • getsqlServer_Con方法获得SQL Server数据库的连接,用户提供数据库的驱动类、数据库服务的IP地址(域名)、数据库服务的端口、数据库名、用户名和密码,便可以获得与SQL Server数据库的连接。SQL Server的驱动程序为com.microsoft.jdbc.sqlserver.SQLServerDriver,默认的数据库端口为1433。

  • getmysql_Con方法获得MySQL数据库的连接,用户提供数据库的驱动类、数据库服务的IP地址(域名)、数据库服务的端口、数据库名、用户名和密码,便可以获得与MySQL数据库的连接。MySQL的驱动程序为com.mysql.jdbc.Driver,默认的数据库端口为3306。

  • getsybase_Con方法获得Sybase数据库的连接,用户提供数据库的驱动类、数据库服务的IP地址(域名)、数据库服务的端口、数据库名、用户名和密码,便可以获得与Sybase数据库的连接。Sybase的驱动程序为com.sybase.jdbc3.jdbc.SybDriver,默认的数据库端口为5007。

  • 在不使用数据库连接时,要及时调用Connection的close方法,关闭数据库连接。


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消