我需要一个JDBC 的三个类Connection Statement ResultSet所有方法的详细介绍
谢谢
[email protected]

解决方案 »

  1.   

    http://download.chinaitlab.com/program/files/12603.html
      

  2.   

    原来这方面的资料太多了在讯雷随便一搜就有
    分都省了
    KAO 
      

  3.   

    http://download.chinaitlab.com/program/files/12603.html
      

  4.   

    一、Connection[接口]1. 打开一个连接创建与数据库的连接的标准方式是在DataSource或DriverManager上调用方法getConnection()。Driver方法connect使用URL来建立连接。用户可以设置JDBC管理层,然后直接调用Driver方法。在两个驱动程序连接到一个数据库,而用户想明确地选择一个特定的驱动程序时,这是很有用的,尽管这种情况很少见。然而,通常让DataSource或DriverManager打开连接会更容易。 2. 数据库URLURL(Uniform Resource Locator,统一资源定位符)是在Intenet查找资源的标识符。可以认为它是一个地址。JDBC URL是确定数据库的灵活方式,从而使得适当的驱动程序识别它并建立与它的连接。JDBC URL允许不同的驱动程序为命名数据库使用不同的方案。例如,odbc子协议允许URL包含属性值。jdbc:<subprotocol>:<subname>JDBC URL的三个部分如下:jdbc:协议。JDBC URL中的协议总是jdbc。<subprotocol>:驱动程序或连接机制的名称,可以有一个或多个驱动程序支持。<subname>:数据库的唯一标识符。 3. odbc子协议odbc子协议特性是,允许在数据库名称后指定任意数量的属性值,如下所示:jdbc:odbc:<data-source-name>[;<attribute-name>=<attribute-value>]*] 二、SQL语句JDBC核心API提供了三种向数据库发送SQL语句的类:Statement:使用createStatement()创建; 
    PreparedStatement:经过预编译并存储在PreparedStatement对象中的SQL语句,使用prepareStatement()方法创建。 
    CallableStatement:用于执行SQL存储过程,使用prepareCall()方法创建。
    1. Statement对象Statement对象用于执行静态SQL语句和获得SQL产生的结果。定义了三种执行SQL语句的方法,用来处理返回不同结果的SQL命令:executeUpdate(String sql):执行SQL INSERT,UPDATE或DELETE语句,返回受影响行的数目或零;
    返回值为int型 
    executeQuery(String sql):执行返回单个ResultSet的SQL语句;
    返回类型ResultSet 
    execute(String sql):执行可以返回多个结果的SQL语句。
    返回类型为boolean,如果返回的是更新的数目,则返回false,如果返回ResultSet,则返回true。
    2. PreparedStatement语句PreparedStatement仅仅是预编译语句。可以使用占位符。 public class PreparedStmt{    public static void main(String[] args){        int qty;        float cost;        String name;        String desc;        String query = "SELECT * FROM stock WHERE item_number = ? ";        try {            Class.forName("oracle.jdbc.driver.OracleDriver");            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:db", "username", "password");            PreparedStatement pStmt = conn.prepareStatement(query);            pStmt.setInt(1, 2);            Result rs = pStmt.executeQuery();            while(rs.next()){                name = rs.getString("name");                desc = rs.getString("description");                qty = rs.getInt("qty");                cost = rs.getFloat("cost");                System.out.println(name + ", " + desc +"\t: " + qty + "\t@ $" + cost);            }        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        } finally {            try{                if (rs != null) rs.close();                if(pStmt != null) pStmt.close();                if(conn != null) conn.close();            } catch (SQLException e){                e.printStackTrace();            }        }    }} 3. CallableStatement允许从Java应用程序中调用数据库存储过程。CallableStatement对象包含了对存储过程的调用;但不包含存储过程本身,这是由于存储过程是存储在数据库中的。使用方法:CallableStatement cStmt = conn.prepareCall("{call 存储过程名(参数表列)}");
      

  5.   

    应用举例
    DML DDL操作
    /**
     * 
     */
    package chapter10;
    import java.sql.*;
    /**
     * <p>Title:oracle</>
     * <p>Description:Java and oracle database</p>
     * <p>Company:gisinfo</p>
     * @author [email protected]
     * @version 1.0
     */
    public class myOrcJdbcOdbc { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String driver="sun.jdbc.odbc.JdbcOdbcDriver";
    String url="jdbc:odbc:orcl10";
    String query,name,,create,drop,insert,update,delete;
    Connection conn;
    Statement statement;
    ResultSet rs=null;
    try{
    Class.forName(driver);
    conn=DriverManager.getConnection(url,"SIP_DB","SIP_DB");
    statement=conn.createStatement();
    /*PreparedStatement ps=conn.prepareStatement("update gc_gccdb_bf set dlmc='gis' where dlmc=?");
    ps.setString(1,"gisinfo");
    ps.executeUpdate();*/
    PreparedStatement ps =conn.prepareStatement("select * from gc_gccdb_bf where cd=?");
    ps.setString(1,"1");
    ps.setString(1,"44");
    ps.setString(1,"5873");
    rs=ps.executeQuery();
    drop="drop table gc_gccdb_bf";
    statement.executeUpdate(drop);
    System.out.println("Drop Success!");
    create="create table gc_gccdb_bf as select * from gc_gccdb";
    statement.executeUpdate(create);
    System.out.println("Create Success!");
    delete="delete from gc_gccdb_bf where cd=88";
    statement.executeUpdate(delete);
    System.out.println("Delete Success!");
    update="update gc_gccdb_bf set dlmc='gisinfo' where dlmc is not null";
    statement.executeUpdate(update);
    System.out.println("Update Success!");
    insert="insert into gc_gccdb_bf select * from gc_gccdb_bf";
    statement.executeUpdate(insert);
    System.out.println("Insert Success!");
    //query="select * from gc_gccdb";
    //rs=statement.executeQuery(query);
    while(rs.next()){
    query=rs.getString("jsld");
    //name=rs.getString("dlmc");
    //=rs.getString("ksld");
          System.out.println("结束道路:"+query);
    //System.out.println("道路名称:"+name);
    //System.out.println("开始道路:"++"\n");
    }
    rs.close();
    statement.close();
    conn.close();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }}
      

  6.   

    只有OUT参数
    有IN OUT参数的ORACLE存储过程的调用/**
     * 
     */
    package chapter10;
    import java.sql.*;
     /**
     * <p>Title:oracle</>
     * <p>Description:Java and oracle database</p>
     * <p>Company:gisinfo</p>
     * @author [email protected]
     * @version 1.0
     */
    public class CallProcedure { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String driver="sun.jdbc.odbc.JdbcOdbcDriver";
    String url="jdbc:odbc:shnw";
    String createprocedure;
    Connection conn;
    Statement statement;
    //ResultSet rs=null;
    try{
    Class.forName(driver);
    conn=DriverManager.getConnection(url,"shnw","shnw");
    statement=conn.createStatement();
    CallableStatement proc = null;
    proc = conn.prepareCall("{ call SHNW.PRO_WHILE_LOOP(?,?,?) }");
    proc.setString(1, "12");
    proc.setString(2, "12");
    proc.registerOutParameter(3,Types.VARCHAR);
    proc.execute();//proc.executeUpdate();
    String V_D = proc.getString(3);
    System.out.println("输出参数V_D="+V_D);
    /*CallableStatement proc = null;
    proc = conn.prepareCall("{ call SHNW.PRO_WHILE_LOOP(?) }");
    proc.registerOutParameter(1, Types.VARCHAR);
    proc.execute();
    String V_D = proc.getString(1);
    System.out.println("输出参数V_D="+V_D);*/
    //rs.close();
    statement.close();
    conn.close();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }}