高分求JDBC ORACLE 资料(先给100收到后再给100)

gisinfo 2008-11-25 01:04:17
我需要一个JDBC 的三个类

Connection Statement ResultSet

所有方法的详细介绍
谢谢


tong.gu@gisinfo.com
...全文
101 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
gisinfo 2008-11-25
  • 打赏
  • 举报
回复
就怎么简单

和VC还是蛮象的嘛!!!


很容易上手


靠靠靠!!!
gisinfo 2008-11-25
  • 打赏
  • 举报
回复
只有OUT参数
有IN OUT参数的ORACLE存储过程的调用

/**
*
*/
package chapter10;
import java.sql.*;


/**
* <p>Title:oracle</>
* <p>Description:Java and oracle database</p>
* <p>Company:gisinfo</p>
* @author tony.gu@gisinfo.com
* @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();
}
}

}
gisinfo 2008-11-25
  • 打赏
  • 举报
回复
应用举例
DML DDL操作
/**
*
*/
package chapter10;
import java.sql.*;
/**
* <p>Title:oracle</>
* <p>Description:Java and oracle database</p>
* <p>Company:gisinfo</p>
* @author tony.gu@gisinfo.com
* @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,mark,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");
//mark=rs.getString("ksld");
System.out.println("结束道路:"+query);
//System.out.println("道路名称:"+name);
//System.out.println("开始道路:"+mark+"\n");
}
rs.close();
statement.close();
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}

}
natee 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gisinfo 的回复:]
原来这方面的资料太多了

在讯雷随便一搜就有


分都省了


KAO
[/Quote]

哈哈...
風男 2008-11-25
  • 打赏
  • 举报
回复
要这三个类的源码吗?
myjava_024 2008-11-25
  • 打赏
  • 举报
回复
一、Connection[接口]

1. 打开一个连接

创建与数据库的连接的标准方式是在DataSource或DriverManager上调用方法getConnection()。Driver方法connect使用URL来建立连接。

用户可以设置JDBC管理层,然后直接调用Driver方法。在两个驱动程序连接到一个数据库,而用户想明确地选择一个特定的驱动程序时,这是很有用的,尽管这种情况很少见。然而,通常让DataSource或DriverManager打开连接会更容易。



2. 数据库URL

URL(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 存储过程名(参数表列)}");

gmh521 2008-11-25
  • 打赏
  • 举报
回复
http://download.chinaitlab.com/program/files/12603.html
JackyNone 2008-11-25
  • 打赏
  • 举报
回复
gisinfo 2008-11-25
  • 打赏
  • 举报
回复
原来这方面的资料太多了

在讯雷随便一搜就有


分都省了


KAO
gisinfo 2008-11-25
  • 打赏
  • 举报
回复
帮个忙啊
renmms 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 natee 的回复:]
你以为这一百一百的是RMB啊!
[/Quote].

...
haode 2008-11-25
  • 打赏
  • 举报
回复
Oracle官网上有资料的
natee 2008-11-25
  • 打赏
  • 举报
回复
你以为这一百一百的是RMB啊!
KingNE 2008-11-25
  • 打赏
  • 举报
回复
http://download.chinaitlab.com/program/files/12603.html
shenjie1989 2008-11-25
  • 打赏
  • 举报
回复
jf

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧