在做drp项目中使用MyEclipse编码来连接oracle,首先先将驱动 ojdbc14.jar 拷到对应的目录中,然后在对应的包中编写连接代码。
package com.bjpowernode.drp.util;
import java.sql.*;
public class Test {
public static void main(String[] args) {
System.out.println(Test.getConnection());
}
public static Connection getConnection(){
Connection cn = null;
try {
//初始化驱动程序,打开与数据库连接的通道。
Class.forName("oracle.jdbc.driver.OracleDriver");
//连接字符串
String url = "jdbc:oracle:thin:@192.168.26.206:1521:ORCL";
//数据库的用户名和密码
String user = "shiqidrp";
String password ="shiqidrp";
cn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return cn;
}
}
问题:在连接字符串ip:1521,后面原先填写的是数据库的名称,结构报SQLException错误,最后修改为了ORCL。
具体的错误处理大家可以看:博客《DRP问题系列——The Network Adapter could not establish the connection 》
对于的数据库连接中的字符串我们通常是写在xml的配置文件中,程序运行时读出,这样便于维护和修改。
修改后:
xml:保存数据库连接字符串等
<?xml version="1.0" encoding="UTF-8"?>
<config>
<db-info>
<driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
<url>jdbc:oracle:thin:@192.168.26.206:1521:ORCL</url>
<user-name>shiqidrp</user-name>
<password>shiqidrp</password>
</db-info>
</config>
JdbcConfig:定义实体,字符串作为其属性
package com.bjpowernode.drp.util;
public class JdbcConfig {
private String driverName;
private String url;
private String user;
private String password;
public String getDriverName() {
return driverName;
}
public void setDriverName(String driverName) {
this.driverName = driverName;
}
//省略后面三个的get和set方法。
}
XmlConfigReader:读取xml文件中的字符串
添加对应的jar包 dom4j-1.6.1.jar 和 jaxen-1.1-beta-6.jar
package com.bjpowernode.drp.util;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlConfigReader {
/*
* 解析sys-config.xml,用单例模式
*/
//懒汉式,用的时候在 new
private static XmlConfigReader instance = null;
private JdbcConfig jdbcConfig = new JdbcConfig();
private XmlConfigReader(){
SAXReader reader = new SAXReader();
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.xml");
try {
Document doc = reader.read(in);
//取得jdbc相关配置信息
Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
Element urlElt = (Element)doc.selectObject("/config/db-info/url");
Element usernameElt = (Element)doc.selectObject("/config/db-info/user-name");
Element passwordElt = (Element)doc.selectObject("/config/db-info/password");
//设置jdbC相关的配置
jdbcConfig.setDriverName(driverNameElt.getStringValue());
jdbcConfig.setUrl(urlElt.getStringValue());
jdbcConfig.setUser(usernameElt.getStringValue());
jdbcConfig.setPassword(passwordElt.getStringValue());
} catch (DocumentException e) {
e.printStackTrace();
}
}
//返回jdbc相关配置
public JdbcConfig getJdbcConfig(){
return jdbcConfig;
}
//单例模式对外提供的访问入口,synchronized保证线程安全
public static synchronized XmlConfigReader getInstance(){
if(instance == null){
instance = new XmlConfigReader();
}
return instance;
}
//主方法
public static void main(String[] args) {
JdbcConfig jdbcConfig= XmlConfigReader.getInstance().getJdbcConfig();
System.out.println(jdbcConfig); //从写了jdbcConfig的toString()方法
}
}
运行显示结果如下说明能成功读出配置文件中的字符串
com.bjpowernode.drp.util.JdbcConfig{drivername:oracle.jdbc.driver.OracleDriver,url:jdbc:oracle:thin:@192.168.26.206:1521:ORCL,user:shiqidrp}
DbUtil:与数据库建立连接进行相关操作
package com.bjpowernode.drp.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/*
* 封装数据常用操作。
*/
public class DbUtil {
/*
* 取得connection
*/
public static Connection getConnection() {
Connection conn = null;
try {
JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
Class.forName(jdbcConfig.getDriverName());
conn = DriverManager.getConnection(jdbcConfig.getUrl(), jdbcConfig.getUser(), jdbcConfig.getPassword());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args){
System.out.println(DbUtil.getConnection()); //测试 ,可进行增删改查操作。
}
}
其他:
JDBC连接SQL Server和MySQL数据库
连接SQL Server数据库
import java.sql.*;
public class Main {
public static void main(String [] args)
{
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=database";//database换成你的数据库名称
String userName="username";//username换成你的SQL Server登录名
String userPwd="password";//password换成你的SQL Server登陆密码
try
{
Class.forName(driverName);
Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("连接数据库成功");
}
catch(Exception e)
{
System.out.print("连接失败");
}
}
}
连接MySQL数据库
package test_mysql;
import java.sql.Connection;
import java.sql.DriverManager;
public class TestMySQL {
public static void main(String[] args) {
String driverName="com.mysql.jdbc.Driver";
String dbURL="jdbc:mysql://localhost:3306/demo"; //连接URL为 jdbc:mysql//服务器地址/数据库名 ,后面的2个参数分别是登陆用户名和密码
String userName="root";
String userPwd="mysql";
try{
Class.forName(driverName);
System.out.println("加载驱动成功");
}
catch(Exception e){
System.out.println("加载驱动失败");
}
try {
Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("连接数据库成功");
} catch (Exception e) {
System.out.print("连接失败");
}
}
}