JDBC连接Oracle数据库,jdbcoracle数据库
我记得大二的时候,我们上java课程,当时老师就说了JDBC这个东西,也没怎么好好学,直到现在,我也不直到JDBC是什么玩意,就知道这玩意可以从数据库提取数据,那么JDBC到底是什么呢?
JDBC是Java DataBase Connectivity的缩写,含义意思是java数据库连接,不需要多解释了,我感觉!
那么我们如何去做这样子的一个连接呢?用过一次之后就会发现,其实很简单,记住几个步骤,还有就是导入必要的驱动包就可以了,下面是几个重要的步骤:
第一步,你的项目环境中必须要导入必要的数据库驱动包,我这里以Oracle 11g数据库为例子写的Demo,我给项目里导入并且添加到WEB项目的ClassPath中去了,Oracle的话,目前导入class12.jar包就可以了。
第二步,这就开始写代码了,实例化你的驱动包:
Class.forName("oracle.jdbc.driver.OracleDriver");//其他数据库就修改一下字符串参数值就行了第三步:创建连接,这里我们需要使用到的DriverManager驱动管类类
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:cgzs", "system", "hj123"); //刚开始学的话,老师们讲的都是这个操作类,其实现在已经很少有人使用这个了,详细的,我还有另一篇博客里面会有介绍 第四步:驱动实例化了,也获取到连接了,那么就开始查询数据库吧,我们需要一个数据库sql状态对象,还需要一个查询结果集接收对象,分别是Statement对象和ResultSet对象
Statement s = conn.createStatement();
ResultSet rs = null;
rs = s.executeQuery("select ID from A");
while(rs.next()){
System.out.println(rs.getString("ID"));
}最后一步:不要忘记了,我们前面使用的Statement对象,ResultSet对象以及Connection对象都是需要关闭连接的,不然就完蛋了。
好了,就这么些了,还是很简单呢,下面贴上我写了一个完整的Demo吧!
public class Demo {
/**
* @param args
* @throws SQLException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws SQLException,
ClassNotFoundException {
// TODO Auto-generated method stub
// 实例化驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 建立连接
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:cgzs", "system", "hj123");
// statement对象用于与数据库进行交互
Statement s = conn.createStatement();
// 执行查询操作
ResultSet rs = s.executeQuery("select * from V_CANCLE");
while (rs.next()) {
// 打印查询结果
System.out.println(rs.getString("WWID"));
}
// 关闭连接,至关重要
conn.close();
s.close();
rs.close();
}
}
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/dms/console/DMSConsole
主要看这一行,NoClassDefFoundError
NoClassDefFoundError 这个错误出现时一般是这两种情况:
1. Windows 不区分文件名大小写,你把文件名搞错了,它和 public class 名字有着大小写的不同。
2. 一个类在 static { } 这个初始化代码块或 static Clz instance= new Clz(); 时 new Clz() 抛出了异常。这样一个 class 在第一次加载后会自动执行 class 级别的初始化代码,比如静态变量和 static { } 中的代码,这个时候如果有一个异常未处理就导致 class 初始化失败,这个 class 确实存在,加载成功了,但加载后 define 这个 class 时出错了。所以错误的名字叫 NoClassDefFoundError 而不是 ClassNotFound,它确实 found 了,但 define 失败。
从你的案例来看,肯定不是第1种情况。
因此你需要做的事情时,从日志中找出来到底什么原因导致 Hibernate 初始化的时候出错了。你的代码有没有可能把某个 Hibernate 初始化的代码直接 try { ... } catch (Exception e) { /* 新手经常在此处什么也不做,连日志都不打印一个 */} ,如果有新手写出这样的代码你是没办法猜出原因的,你唯一的办法只有人工检查代码,一行一行地看。
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/dms/console/DMSConsole
主要看这一行,NoClassDefFoundError
NoClassDefFoundError 这个错误出现时一般是这两种情况:
1. Windows 不区分文件名大小写,你把文件名搞错了,它和 public class 名字有着大小写的不同。
2. 一个类在 static { } 这个初始化代码块或 static Clz instance= new Clz(); 时 new Clz() 抛出了异常。这样一个 class 在第一次加载后会自动执行 class 级别的初始化代码,比如静态变量和 static { } 中的代码,这个时候如果有一个异常未处理就导致 class 初始化失败,这个 class 确实存在,加载成功了,但加载后 define 这个 class 时出错了。所以错误的名字叫 NoClassDefFoundError 而不是 ClassNotFound,它确实 found 了,但 define 失败。
从你的案例来看,肯定不是第1种情况。
因此你需要做的事情时,从日志中找出来到底什么原因导致 Hibernate 初始化的时候出错了。你的代码有没有可能把某个 Hibernate 初始化的代码直接 try { ... } catch (Exception e) { /* 新手经常在此处什么也不做,连日志都不打印一个 */} ,如果有新手写出这样的代码你是没办法猜出原因的,你唯一的办法只有人工检查代码,一行一行地看。