oracle JDBC接続データベース

6035 ワード

一:JDBCとは何か
JDBCフルネーム:java database connectivityは、sun社が提供するJava接続データベースの標準仕様です.
二:データベースの接続方法
データベースへの接続には5つのステップがあります.
1.ロードドライバ
2.データベースへの接続
3.sql文を実行するオブジェクトの作成
4.sql文の実行
5.処理された結果セット(クエリ文のみ)
6.リソースのクローズ
1.ロードドライバ
	Class.forName("oracle.jdbc.driver.OracleDriver");

2.データベースへの接続
ドライバをロードすると、DriverManagerのgetConnectionメソッドでデータベースへの接続が得られます.
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","123456");

最初のパラメータ:jdbcとデータベース接続のプロトコル、最初の統一はjdbc、2番目のデータベースの名前、3番目のoracleデータベースは、mysqlデータベースはありません.4番目はipアドレス、ポート番号、データベースフラグです.
2番目のパラメータ:ユーザー名
3番目のパラメータ;パスワード
データベースの接続には3つの方法があります.
2つ目はpropertiesクラスを使用し、プロファイルを格納できます.getConnection(String url, Properties info)メソッドを使用してconnectionオブジェクトを取得
	public static Connection getConnection() throws ClassNotFoundException,
			SQLException{
		Properties info=new Properties();
		Class.forName("oracle.jdbc.driver.OracleDriver");
		info.setProperty("user", "scott");
		info.setProperty("password", "123456");
		Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL",info);
		return conn;
	}

第三の方法
getConnection(String url)所与のデータベースURLへの接続を確立しようとする.
このurlのフォーマットはjdbc:oracle:<drivertype>:<user>/<password>@<database>です.
public static Connection getConnection() throws ClassNotFoundException,
			SQLException{
		Properties info=new Properties();
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection conn = DriverManager.getConnection("jdbc:oracle:thin:scott/123456@localhost:1521:ORCL");
		return conn;
	}

3.sql文を実行するオブジェクトを得る
sql文を実行するオブジェクトはstatementです
Statement stmt=conn.createStatement();

4.sql文の実行
stmt.execute("select ename,job from emp where empno=7839");

5.結果セットを取得し、結果を処理する(クエリ文の場合)
私たちが得た結果セットは、ポインタに相当するもので、最初は最初の行の前列を指しています.
	ResultSet rs=stmt.getResultSet();
	
		while(rs.next()){
			System.out.println(rs.getObject("ename"));
			System.out.println(rs.getObject("job"));
		}

6.リソースのクローズ
rs.close();
		stmt.close();
		conn.close();

全体のコードは次のとおりです.
package testjdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestJdbc {

	public static void main(String[] args) throws SQLException,
			ClassNotFoundException {
		// TODO Auto-generated method stub
		// 1.    
		Class.forName("oracle.jdbc.driver.OracleDriver");
		// 2.         
		Connection conn = DriverManager.getConnection(
				"jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "123456");
		// 3.           
		Statement stmt = conn.createStatement();

		// 4.  sql  
		stmt.execute("select ename,job from emp where empno=7839");
		// 5.     
		ResultSet rs = stmt.getResultSet();

		while (rs.next()) {
			System.out.println(rs.getObject("ename"));
			System.out.println(rs.getObject("job"));
		}
		// 6.    
		rs.close();
		stmt.close();
		conn.close();
	}

}

三:最適化コード
1.基本最適化

Statement executeQuery , , 。

		ResultSet rs = stmt.executeQuery("select ename,job from emp where empno=7839");
DMl , statement executeupdate
    int b= stmt2.executeUpdate("insert into emp(empno,ename) values(1104,' ')");
       System.out.println(b);

2.

sql , sql , , , , , 。

PreparedStatementstatementインタフェースが され、sql がPreparedStatement , sql 。でプリコンパイルされることができる.

		PreparedStatement stmt = conn
				.prepareStatement("select ename,job from emp where empno=?");
		//         ,     ,       ,    stmt set         ,set               
		stmt.setInt(1, 7839);
		//     
		stmt.execute();
package testjdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestJdbc {

	public static void main(String[] args) throws SQLException,
			ClassNotFoundException {
		// TODO Auto-generated method stub
		// 1.    
		Class.forName("oracle.jdbc.driver.OracleDriver");
		// 2.         
		Connection conn = DriverManager.getConnection(
				"jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "123456");
		// 3.           
		PreparedStatement stmt = conn
				.prepareStatement("select ename,job from emp where empno=?");
		//          ,     ,       ,    stmt set         ,set               
		stmt.setInt(1, 7839);
		//      
		stmt.execute();
		//      
		ResultSet rs = stmt.getResultSet();
		while (rs.next()) {
			System.out.println(rs.getObject("ename"));
			System.out.println(rs.getObject("job"));
		}
		// 6.    
		rs.close();
		stmt.close();
		conn.close();
	}
}