JAVA使用JDBC访问数据库的步骤:
1. 得到数据库驱动程序
2. 创建数据库连接
3. 执行SQL语句
4. 得到结果集
5. 对结果集做相应的处理(增,删,改,查)
6. 关闭资源:这里释放的是DB中的资源
方法:
DriverManager:这个是一个实现类,它是一个工厂类,用来生产Driver对象的
这个类的结构设计模式为工厂方法
Driver:这是驱动程序对象的接口,它指向一个实实在在的数据库驱动程序对象,那么这个数据库驱动程序对象是从哪里来的呢?
DriverManager工厂中有个方法:getDriver(String URL),通过这个方法可以得到驱动程序对象,这个方法是在各个数据库厂商按JDBC规范设计的数据库驱动程序包里的类中静态实现的,也就是在静态块中
Connection:这个接口可以制向一个数据库连接对象,那么如何得到这个连接对象呢?
是通过DriverManager工厂中的getConnection(String URL)方法得到的
Statement:用于执行静态的SQL语句的接口,通过Connection中的createStatement方法得到的
Resultset:用于指向结果集对象的接口,结果集对象是通过Statement中的execute等方法得到的
驱动:
数据库厂商提供连接数据库类
class12.jar 9i
ojdbc14.jar oracle10g
ojdbc5或ojdbc6 oracle11g
public class ConnOracle { //连接数据库 public static void getConnection(){ Connection conn = null; String className = "oracle.jdbc.driver.OracleDriver";//驱动名 String url = "jdbc:oracle:thin:@localhost:1521:orcl";// 数据库的URL String user = "scott"; String password = "tiger"; //1.加载驱动 使用反射技术 主动加载驱动 并且生成了该类对应的Class对象 try{ Class.forName(className); //2.创建连接 Socket conn = DriverManager.getConnection(url, user, password); }catch(ClassNotFoundException e){ System.out.println("驱动类没有找到"); e.printStackTrace(); }catch(SQLException e){ System.out.println("连接数据库失败"); e.printStackTrace(); } Category category = new Category(); String sql = "select * from category where cid=?"; // 3.建立通道 PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1, cid); } catch (SQLException e) { System.out.println("建立通道失败"); e.printStackTrace(); } // 4.执行 // 如果sql 语句是dml 语句 返回值 是dml语句影响的行数 // 如果sql 语句是ddl 语句 返回值是0 ResultSet rs = null; try { rs = pstmt.executeQuery();// 执行DQL语句 executeUpdate() 执行非DQL while (rs.next()) { category.setCid(rs.getInt(1)); category.setCname(rs.getString(2)); category.setCdesc(rs.getString(3)); } } catch (SQLException e) { System.out.println("修改商品种类失败"); e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } // 5.关闭 if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }