1. MySQL(http://www.mysql.com)mysql-connector-java-2.0.14-bin.jar
Class.forName( "org.gjt.mm.mysql.Driver" );
cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd );
2. PostgreSQL(http://www.de.postgresql.org)pgjdbc2.jar
Class.forName( "org.postgresql.Driver" );
cn = DriverManager.getConnection( "jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName", sUsr, sPwd );
3. Oracle(http://www.oracle.com/ip/deploy/database/oracle9i/)classes12.zip
Class.forName( "oracle.jdbc.driver.OracleDriver" );
cn = DriverManager.getConnection( "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd );
4. Sybase(http://jtds.sourceforge.net)jconn2.jar
Class.forName( "com.sybase.jdbc2.jdbc.SybDriver" );
cn = DriverManager.getConnection( "jdbc:sybase:Tds:MyDbComputerNameOrIP:2638", sUsr, sPwd );
//(Default-Username/Password: "dba"/"sql")
5. Microsoft SQL Server(http://jtds.sourceforge.net)
Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
cn = DriverManager.getConnection( "jdbc:jtds:sqlserver://MyDbComputerNameOrIP:1433/master", sUsr, sPwd );
6. Microsoft SQL Server(http://www.microsoft.com)
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );
cn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://MyDbComputerNameOrIP:1433;databaseName=master", sUsr, sPwd );
7. ODBC
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
Connection cn = DriverManager.getConnection( "jdbc:odbc:" + sDsn, sUsr, sPwd );
8.DB2
Class.forName("com.ibm.db2.jdbc.net.DB2Driver");
String url="jdbc:db2://192.9.200.108:6789/SAMPLE"
cn = DriverManager.getConnection( url, sUsr, sPwd );
Java调用Oracle存储过程示例 |
Tags: javaoracleprocedure |
准备工作:
1. 创建表
drop table T_TEST_PROCEDURE cascade constraints;
/*==============================================================*/ /*
Table: T_TEST_PROCEDURE
*/ /*==============================================================*/ create
table T_TEST_PROCEDURE ( ID
NUMBER(19) not null, NAME
VARCHAR2(40), AGE NUMBER(3), constraint
PK_T_TEST_PROCEDURE primary key (ID) );
2. 创建存储过程
无返回值的存储过程
CREATE OR REPLACE PROCEDURE
proctest ( ID IN NUMBER, NAME IN VARCHAR2, age
IN NUMBER ) AS BEGIN INSERT INTO
t_test_procedure (ID, NAME, age )
VALUES (ID, NAME, age ); END
proctest; /
有非列表返回值的存储过程
CREATE OR REPLACE PROCEDURE
proc_returnnolist ( p_id IN INTEGER, p_name OUT
VARCHAR2, p_age OUT INTEGER ) AS BEGIN SELECT NAME,
age INTO p_name, p_age FROM t_test_procedure WHERE ID =
p_id; END proc_returnnolist; /
返回结果集的存储过程
要返回结果集,需要使用Oracle的package
CREATE OR REPLACE PACKAGE
test_proc_package AS TYPE testproccursor IS REF CURSOR; END
test_proc_package;
存储过程
CREATE OR REPLACE PROCEDURE
proc_returnlist ( testproccursor OUT
test_proc_package.testproccursor ) AS BEGIN OPEN
testproccursor FOR SELECT * FROM
t_test_procedure; END proc_returnlist; /
用Java调用存储过程
1. 调用无返回值的存储过程
CallableStatement callableStmt =
con .prepareCall("{call
proctest(?,?,?)}"); callableStmt.setInt(1,
2); callableStmt.setString(2, "Stephen"); callableStmt.setInt(3,
27); callableStmt.execute(); callableStmt.close(); System.out.println("Success");
2. 调用返回非列表的存储过程
CallableStatement callableStmt =
con .prepareCall("call
proc_returnnolist(?,?,?)"); callableStmt.setInt(1,
3); callableStmt.registerOutParameter(2,
Types.VARCHAR); callableStmt.registerOutParameter(3,
Types.INTEGER); callableStmt.execute(); String name =
callableStmt.getString(2); int age = callableStmt.getInt(3);
callableStmt.close(); System.out.println("name:" + name + " age:" +
age);
3. 调用返回结果集的存储过程
CallableStatement callableStmt =
con .prepareCall("call
proc_returnlist(?)"); callableStmt.registerOutParameter(1,
OracleTypes.CURSOR); callableStmt.execute(); ResultSet rs =
(ResultSet) callableStmt.getObject(1); while (rs.next())
{ System.out.println("name:" + rs.getString("name") + "
age:" +
rs.getInt("age")); } rs.close(); callableStmt.close();
|
数据库驱动下载地址(classes12.jar,mysql-connector-java-3.1.11-bin.jar,sqljdbc.jar,sqljdbc4.jar):驱动下载