1. 程式人生 > >JAVA中資料庫的連線一般方法

JAVA中資料庫的連線一般方法


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

/**
 * JDBC:java資料庫連結 使用JDBC連線資料庫的基本流程(此處使用Oracle)
 *  1:載入驅動類 
 *  2:與資料庫建立連線 
 *  3:執行SQL語句
 *  4:處理結果集 
 *  5:關閉連線
 * 
 * @author ^_^
 * 
 */
public class JDBCDemo {
	public static void main(String[] args) {
		String orc="oracle.jdbc.driver.OracleDriver";
		//java.sal.Connection
		//表示與資料庫的連線
		Connection conn=null;
		try {
            /*
             * 1:
             * 載入驅動
             * 需要注意,不同的資料庫,引數那個字串內容不同
             * 
             * 這一步執行完後也許丟擲:
             * ClassNotFoundException異常
             * 出現原因如下:
             * 1:資料庫驅動的jar包沒有匯入到環境變數當中
             * 2:Class.forName中的字串拼寫錯誤
             */
			Class.forName(orc);
			System.out.println("驅動載入成功");
			/*
			 * 2:通過DriverManager建立與資料庫的連線
			 *   其靜態方法getConnection用於獲取連線
			 *   通常需要三個引數
			 *   引數1:資料庫的地址以及埠(不同資料庫字串內容不相同)
			 *     格式:jdbc:oracle:thin:@host:port:sid
			 *   引數2:資料庫使用者名稱
			 *   引數3:資料庫密碼
			 */
			conn=DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:xe",//資料庫的地址及其埠
					"system", //資料庫使用者名稱
					"8nianji7ban"//資料庫密碼
					);
			System.out.println("資料庫已經連線");
			/*
			 * 3:java.sql.Statement
			 *   該類用於執行SQL語句並獲取結果
			 */
			Statement state =conn.createStatement();
			//System.out.println("QQQQQ");
			String sql="select ename,job,sal,deptno from emp";//當前需要執行的資料庫語句
			System.out.println(sql);
			/*
			 * Statement針對不同的SQL語句提供了不同的執行方法:
			 * ResultSet executeQuery(String aql)
			 * 該方法專門用來執行DQL語句,返回的ResultSet表示查詢出來的結果集
			 * 
			 * int executeUpdate(String sql)
			 * 該方法專門用來執行DML語句,返回的數字表示執行該語句後影響了表中多少條資料
			 * 
			 * boolean execute(String sql)
			 * 該方法理論上什麼語句都可以執行,但是由於DQL,DML都有專門的方法,所以該方法通常用來執行DDL語句
			 * 該方法的返回值表示執行SQL語句後是否存在結果集,存在返回true
			 * 若SQL語句本身就有錯誤,直接丟擲異常:SQLException
			 */
			System.out.println("正在執行查詢");
			ResultSet rs=state.executeQuery(sql);//返回一個結果集
			System.out.println("查詢完畢");
			/*
			 * 4:遍歷結果集(查詢結果)
			 * ResulSet提供用於遍歷結果集的方法
			 *   boolean next()
			 *   該方法有兩個作用,首先當我們查詢出結果集後RS的指標指向第一條資料之上,所以我們需要先呼叫一次next()
			 *   使其指標移動到第一條資料上,並表示該條資料
			 *   第二個作業是看返回值,若指標向下移動後,發現沒有資料了,會返回false,若有則返回true,所以我們只有在該方法返回true的時候才獲取當前記錄的各個欄位對應的值
			 *   
			 *   RS還提供了若干getXXX(String fieldName)
			 *   方法:
			 *   該方法是用來獲取RS表示的當前記錄當中給定欄位對應的值,不同的欄位由於型別不同,要呼叫相對應的方法
			 *   例如:varchar2型別就呼叫getString
			 */
			while(rs.next()){
				//獲取員工名字
				String ename=rs.getString("ename");
				String job=rs.getString("job");
				int sal=rs.getInt("sal");
				int deptno=rs.getInt("deptno");
				System.out.println(ename+","+job+","+sal+","+deptno);
			}
			rs.close();
			state.close();
		} catch (Exception e) {
			e.printStackTrace();
			// TODO: handle exception
		}finally{
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}
註釋比較詳細,其他不做贅述.