5:JDBC的访问步骤

    A:加载驱动
        1:将相关数据库的驱动包拷到对应的应用程序中。并加载到编译路径中。

        2:使用Class.forName来加载相应的驱动程序。

    B:使用驱动管理器获取连接
        String url = "jdbc:oracle:thin:@127.0.0.1:1521:oradb";
        String username = "JN0909";
        String password = "JN0909";
        Connection conn = DriverManager.getConnection(url, username,
                password);        

    C:构造SQL,并通过Statement对象执行SQL
        Statement stmt = conn.createStatement();
        System.out.println(stmt);
        String sql = "insert into t_mc_type(nid,sname,npid) values(15,'JDBC插入的数据','1')";
        int i = stmt.executeUpdate(sql);        
    D:关闭资源
        finally {
            try {
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }        
6:Statement对象

    执行Insert/update/delete --->executeUpdate();

    执行Select多条/Select单条---->executeQuery();

7:ResetSet对象

    结果集(记录集)对象,结果集指针停在记录集第一行的前面。

    返回多条,while循环
    返回单条,if判断。

    不可滚动的记录集对象
        stmt = conn.createStatement();
        String sql = "Select suser,spwd,sname,ssex,nage,dregdate from t_user";
        rs = stmt.executeQuery(sql);

    可滚动的记录集对象
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_READ_ONLY);
        String sql = "Select suser,spwd,sname,ssex,nage,dregdate from t_user";
        rs = stmt.executeQuery(sql);

    可更新的记录集记录
        效率比较慢。正常更新数据还是使用insert/update/delete
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_UPDATABLE);
        String sql = "Select suser,spwd,sname,ssex,nage,dregdate from t_user where suser = 'lin'";
        rs = stmt.executeQuery(sql);
        // boolean flag = rs.absolute(3);
        boolean flag = rs.last();
        if (flag == true) {
            //rs.updateString("suser", "lin2");
            rs.updateString("spwd", "789修改22");
            rs.updateString("sname", "直实名称_修改");
            rs.updateString("ssex", "男");
            rs.updateInt("nage", 100);
            rs.updateTimestamp("dregdate", java.sql.Timestamp
                    .valueOf("2009-1-1 20:52:33"));
             //rs.updateRow();
            rs.deleteRow();

        }

8:PreparedStatement对象

    用于预编译SQL语句。

9:JDBC事务

    conn.setAutoCommit(false);
    conn.commit();
    conn.rollback();

例子:

package com.softfz;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Test test = new Test();
        test.transaction();
    }

    public void executeUpdate() {
        Connection conn = null;
        Statement st = null;
        String sql = "insert into t_user(userid,username) values(seq_t_user.nextval,'hpp')";
        
        try {
            conn = getConn();
            st = conn.createStatement();
            int effectedRows = st.executeUpdate(sql);
            System.out.println(effectedRows);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            closeConn(null,st,conn);
        }
    }
    
    public void transaction() {
        Connection conn = null;
        Statement st = null;
        String sql = "insert into t_user(userid,username) values(seq_t_user.nextval,'hpp')";
        String sql1 = "delete from t_user where id=1";
        try {
            conn = getConn();
            conn.setAutoCommit(false);
            st = conn.createStatement();
            st.executeUpdate(sql);
            st.executeUpdate(sql1);
            conn.commit();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            try {
                conn.rollback();
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }finally{
            closeConn(null,st,conn);
        }
    }
    
    public void executeQuery() {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        String sql = "select * from t_user";
        
        try {
            conn = getConn();
            st = conn.createStatement();
            rs = st.executeQuery(sql);
            while(rs.next())
            {
                String username = rs.getString("username");
                int userid = rs.getInt(1);
                System.out.println("username="+username);
                System.out.println("userid="+userid);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            closeConn(rs,st,conn);
        }
    }

    private static Connection getConn() {
        String url = "jdbc:oracle:thin:@localhost:1521:orcl";
        String username = "hpp";
        String password = "hpp";
        Connection conn = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }

    private static void closeConn(ResultSet rs, Statement st, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
                rs = null;
            }
            if (st != null) {
                st.close();
                st = null;
            }
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (Exception e) {
            // TODO: handle exception
        }

    }
}