高分求JDBC ORACLE 资料(先给100收到后再给100) 我需要一个JDBC 的三个类Connection Statement ResultSet所有方法的详细介绍谢谢[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://download.chinaitlab.com/program/files/12603.html 原来这方面的资料太多了在讯雷随便一搜就有分都省了KAO http://download.chinaitlab.com/program/files/12603.html 一、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 存储过程名(参数表列)}"); 应用举例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(); } }} 只有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(); } }} 关于实例化的问题 求助:用反射机制来得到简单bean的所有的值, 也就是代替toString()方法. 从数据库获取数据,显示数据数量的问题 WEB服务器里的数据库连接池不够用了怎么办? 请教一下,jsp与javascript有什么区别?谢谢! ???????????????????/ String类型的对象和其他类型的对象有什么区别? 今天刚学到函数,有个问题弄不懂 java 中对象引用 是相当于c++指针还是相当于c++对象 各位高手,请教一个简单的问题! MDI界面问题,请各位高手帮忙。 正则如何判断
分都省了
KAO
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 存储过程名(参数表列)}");
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();
}
}}
有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();
}
}}