JDBC你应该知道的事?
/* * 文 件 名: DbUtils.java * 版 权: Co., Ltd. Copyright YYYY-YYYY, All rights reserved * 描 述: <描述> * 修 改 人: * 修改时间: Apr 19, 2013 * 跟踪单号: <跟踪单号> * 修改单号: <修改单号> * 修改内容: <修改内容> */ package com.huawei.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * <一句话功能简述> * <功能详细描述> * * @author * @version [版本号, Apr 19, 2013] * @see [相关类/方法] * @since [产品/模块版本] */ public class DbUtils { private static DbUtils dbUtils = new DbUtils(); private DbUtils() { } public static DbUtils getInstance() { return dbUtils; } public void queryExcute() { Connection conn = null; Statement stm = null; ResultSet result = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { conn = DriverManager.getConnection("jdbc:oracle:thin:@10.137.107.160:1521:iptvmem", "userdb30", "I_Vcbs33"); stm = conn.createStatement(); String sql = "select * from ocs_tasktodo2 o where o.subscriberno ='" + "826670842" + "'"; result = stm.executeQuery(sql); if (null != result) { while (result.next()) { System.out.println(result.getString("subscriberno")); } } } catch (SQLException e) { e.printStackTrace(); } finally { try { result.close(); stm.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
哈哈,我知道的就这么多,懂一点补充一点
try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); }
这一行没有任何的设值,孤独的立在代码中,有点奇怪,于是我删掉了这一行。再跑一边,哈哈报错了
java.sql.SQLException: No suitable driver at java.sql.DriverManager.getConnection(DriverManager.java:545) at java.sql.DriverManager.getConnection(DriverManager.java:171) at com.huawei.jdbc.DbUtils.queryExcute(DbUtils.java:59) at com.huawei.jdbc.DbUtils.main(DbUtils.java:40) Exception in thread "main" java.lang.NullPointerException at com.huawei.jdbc.DbUtils.queryExcute(DbUtils.java:87) at com.huawei.jdbc.DbUtils.main(DbUtils.java:40)
猜测这个是给jvm申明一个Oracle驱动的实例。
再接着
conn = DriverManager.getConnection("jdbc:oracle:thin:@10.137.107.160:1521:iptvmem", "userdb30", "I_Vcbs33");
使用DriverManager建立了一个连接,可以看下其中的方法
public static synchronized Connection getConnection(String url, String user, String password) throws SQLException { java.util.Properties info = new java.util.Properties(); // Gets the classloader of the code that called this method, may // be null. ClassLoader callerCL = DriverManager.getCallerClassLoader(); if (user != null) { info.put("user", user); } if (password != null) { info.put("password", password); } return (getConnection(url, info, callerCL)); }
再接下来就是:
stm = conn.createStatement(); String sql = "select * from ocs_tasktodo2 o where o.subscriberno ='" + "826670842" + "'"; result = stm.executeQuery(sql); if (null != result) { while (result.next()) { System.out.println(result.getString("subscriberno")); } }
请大神解释一下,从上至下的流程!