Java连接各种数据库以及调用存储过程

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):驱动下载

原文地址:https://www.cnblogs.com/icerainsoft/p/2140449.html