例子1:
****************************************************************
說明:僅僅實現(xiàn)了數(shù)據(jù)庫的連接,測試了一條查詢語句 *
****************************************************************
import java.sql.*;
public class TestJDBC {
public static void main(String[] args) {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@ROBUST:1521:ORACLE9";
String userName = "scott";
String userPassword = "tiger";
try {
Class.forName(driver);//加載驅(qū)動程序。
conn = DriverManager.getConnection(url, userName, userPassword);//獲得連接。
stmt = conn.createStatement(); //獲得statement
rs = stmt.executeQuery("select * from dept");
while(rs.next()) {
System.out.println(rs.getString("deptno"));
System.out.println(rs.getInt("deptno"));
System.out.println(rs.getString("dname"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
***************************************************************
說明:測試了一條插入語句 *
***************************************************************
例子2:
import java.sql.*;
public class TestDML {
public static void main(String[] args) {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@robust:1521:oracle9";
String userName = "scott";
String userPassword = "tiger";
String sql = "insert into dept values(50,'Shang','Harbin')";
Connection conn = null;
Statement stmt = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, userName, userPassword);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(stmt != null) {
stmt.close();
stmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
舉例3
********************************************************************
說明:通過命令行輸入實現(xiàn)數(shù)據(jù)庫的插入,注意sql語句的寫法 *
********************************************************************
import java.sql.*;
public class TestDML2 {
public static void main(String[] args) {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@robust:1521:oracle9";
String userName = "scott";
String userPassword = "tiger";
int deptno = 0;
String dname = args[1];
String loc = args[2];
if(args.length != 3) {
System.out.println("參數(shù)個數(shù)輸入錯誤,請重新運行程序!");
System.exit(-1);
}
try{
deptno = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
System.out.println("參數(shù)輸入錯誤,請輸入數(shù)字!");
System.exit(-1);
}
String sql = "insert into dept values (" + deptno + ",'" + dname + "','" + loc + "')";
//System.out.println(sql);
Connection conn = null;
Statement stmt = null;
try{
Class.forName(driver);
conn = DriverManager.getConnection(url, userName, userPassword);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(stmt != null) {
stmt.close();
stmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
例子4:
********************************************************************
說明:通過命令行輸入實現(xiàn)數(shù)據(jù)庫的插入,改用了PreparedStatement *
********************************************************************
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
public class TestPreparedStmt {
public static void main(String[] args) {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@robust:1521:oracle9";
String userName = "scott";
String userPassword = "tiger";
int deptno = 0;
String dname = args[1];
String loc = args[2];
if(args.length != 3) {
System.out.println("參數(shù)個數(shù)輸入錯誤,請重新運行程序!");
System.exit(-1);
}
try{
deptno = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
System.out.println("參數(shù)輸入錯誤,請輸入數(shù)字!");
System.exit(-1);
}
//System.out.println(sql);
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName(driver);
conn = DriverManager.getConnection(url, userName, userPassword);
pstmt = conn.prepareStatement("insert into dept values (?,?,?)");
pstmt.setInt(1, deptno);
pstmt.setString(2, dname);
pstmt.setString(3, loc); //1 2 3 表示第1 2 3 個位置。
pstmt.executeUpdate();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(pstmt != null) {
pstmt.close();
pstmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
例子5:
****************************************************************
說明:java如何調(diào)用存儲過程的舉例。 *
****************************************************************
***************************************************************************
create or replace procedure p *
( v_a int number , v_b number ,v_ret out number, v_temp int out number ) *
is *
begin *
if (v_a > v_b) then *
v_ret :=v_a; *
else *
v_ret := v_b; *
end if; *
v_temp := v_temp + 1; *
end; *
***************************************************************************
sql語句如上。
import java.sql.*;
public class TestProc {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:SXT", "scott", "tiger");
CallableStatement cstmt = conn.prepareCall("{call p(?, ?, ?, ?)}");
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.registerOutParameter(4, Types.INTEGER);
cstmt.setInt(1, 3);
cstmt.setInt(2, 4);
cstmt.setInt(4, 5);
cstmt.execute();
System.out.println(cstmt.getInt(3));
System.out.println(cstmt.getInt(4));
cstmt.close();
conn.close();
}
}
例子6:
****************************************************************
說明:批處理舉例 *
****************************************************************
import java.sql.*;
public class TestBatch {
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:SXT", "scott", "tiger");
/*
Statement stmt = conn.createStatement();
stmt.addBatch("insert into dept2 values (51, '500', 'haha')");
stmt.addBatch("insert into dept2 values (52, '500', 'haha')");
stmt.addBatch("insert into dept2 values (53, '500', 'haha')");
stmt.executeBatch();
stmt.close();
*/
PreparedStatement ps = conn.prepareStatement("insert into dept2 values (?, ?, ?)");
ps.setInt(1, 61);
ps.setString(2, "haha");
ps.setString(3, "bj");
ps.addBatch();
ps.setInt(1, 62);
ps.setString(2, "haha");
ps.setString(3, "bj");
ps.addBatch();
ps.setInt(1, 63);
ps.setString(2, "haha");
ps.setString(3, "bj");
ps.addBatch();
ps.executeBatch();
ps.close();
conn.close();
}
}
例子7:
****************************************************************
說明:提交的例子 *
****************************************************************
import java.sql.*;
public class TestTransaction {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:SXT", "scott", "tiger");
conn.setAutoCommit(false); //將自動提交設置為false
stmt = conn.createStatement();
stmt.addBatch("insert into dept2 values (51, '500', 'haha')");
stmt.addBatch("insert into dept2 values (52, '500', 'haha')");
stmt.addBatch("insert into dept2 values (53, '500', 'haha')");
stmt.executeBatch();
conn.commit(); //自動提交為false,所以只能手動提交了。
conn.setAutoCommit(true);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
try {
if(conn != null)
{
conn.rollback();
conn.setAutoCommit(true); //因為這里面是SQLException,說明sql語句出錯了,必須回滾。
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally {
try {
if(stmt != null)
stmt.close();
if(conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
例子8:
************************************************************************
JDBC處理可滾動的結(jié)果集 *
************************************************************************
import java.sql.*;
public class TestScroll {
public static void main(String args[]) {
try {
new oracle.jdbc.driver.OracleDriver();
String url = "jdbc:oracle:thin:@192.168.0.1:1521:SXT";
Connection conn = DriverManager
.getConnection(url, "scott", "tiger");
Statement stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt
.executeQuery("select * from emp order by sal");
rs.next();
System.out.println(rs.getInt(1));
rs.last();
System.out.println(rs.getString(1));
System.out.println(rs.isLast());
System.out.println(rs.isAfterLast());
System.out.println(rs.getRow());
rs.previous();
System.out.println(rs.getString(1));
rs.absolute(6);
System.out.println(rs.getString(1));
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}