1. 程式人生 > >怎樣利用JDBC連接並操作Oracle數據庫

怎樣利用JDBC連接並操作Oracle數據庫

eat man dex 關閉 gets 防止 數據 null 找到

之前學習.NET的時候。以前利用ODBC進行連接數據庫,而在Java中通常採用JDBC連接數據庫,這裏以oracle數據庫為例簡單的總結一下利用JDBC怎樣連接並操作數據庫。

1、連接

public class DbUtil {
	public static Connection getConnection(){
		Connection conn=null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");//找到oracle驅動器所在的類
			String url="jdbc:oracle:thin:@localhost:1521:bjpowernode"; //URL地址
			String username="drp";
			String password="drp";
			conn=DriverManager.getConnection(url, username, password);
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
	<pre name="code" class="java">	
	public static void close(PreparedStatement pstmt){
		if(pstmt !=null){
			try {
				pstmt.close();
			} catch (SQLException e) {
				
				e.printStackTrace();
			}
		}
	}
	
	public static void close(ResultSet rs){
		if(rs !=null){
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}



在運行Class.forName時,須要找到OracleDriver所在的地址,路徑為:

1、首先找到

D:\oracle\product\10.2.0\db_1\jdbc\lib 找到ojdbc14.jar

2、其次再找到 ojdbc14.jar\oracle\jdbc\driver 以下的oraceldriver這樣就找到了要使用的驅動程序文件


2、操作數據庫--加入

public void addUser(User user){
		String sql="insert into t_user(user_id,user_name,PASSWORD,CONTACT_TEL,EMAIL,CREATE_DATE)values(?

,?

,?,?,?

,?)"; //?為參數占位符 Connection conn=null; PreparedStatement pstmt=null; //通常利用PreparedStatement進行操作,性能得到優化 try{ conn=DbUtil.getConnection(); pstmt=conn.prepareStatement(sql); pstmt.setString(1, user.getUserId()); pstmt.setString(2,user.getUserName()); pstmt.setString(3, user.getPassword()); pstmt.setString(4, user.getContactTel()); pstmt.setString(5,user.getEmail()); //pstmt.setTimestamp(6,new Timestamp(System.currentTimeMillis())); pstmt.setTimestamp(6, new Timestamp(new Date().getTime()));//獲取當前系統時間 pstmt.executeUpdate();//運行增刪改操作 }catch(SQLException e){ e.printStackTrace(); }finally{ DbUtil.close(conn); DbUtil.close(pstmt); } }


3、操作數據庫--查詢

public User findUserById(String userId){
		String sql = "select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id=?";
		Connection conn=null;
		PreparedStatement pstmt=null;
		ResultSet rs=null;//定義存放查詢結果的結果集
		User user=null;
		try{
			conn=DbUtil.getConnection();
			pstmt=conn.prepareStatement(sql);
			pstmt.setString(1,userId);
			rs=pstmt.executeQuery();//運行查詢操作
			if(rs.next()){				
				user=new User();
				user.setUserId(rs.getString("user_Id"));
				user.setUserName(rs.getString("user_name"));
				user.setPassword(rs.getString("password"));
				user.setContactTel(rs.getString("contact_Tel"));
				user.setEmail(rs.getString("email"));
				user.setCreateDate(rs.getTimestamp("create_date"));				
			}
		}catch(SQLException e){
			e.printStackTrace();
		}finally{
			//按順序進行關閉
			DbUtil.close(rs);
			DbUtil.close(pstmt);
			DbUtil.close(conn);
			
		}
		return user;
	}

、總結

1、PreparedStatement與Statement的簡單差別 Statement為一條SQL語句生成運行計劃,假設參數值不同。會生成不同的sql語句,運行相應參數值個數的次數。假設僅僅有一條SQL語句運行時,最好採用Statement進行。 PreparedStatement使用綁定變量重用運行計劃。不同的參數值相應的查詢語句。僅僅會生成一個sql語句。大大提高了運行的效率。是預編譯的。在大批量語句操作時,提高了效率,同一時候可採用‘?‘來代表參數,能夠防止SQL註入。安全性更高。

2、與之前的知識進行聯系 眼下接觸到的額JDBC中的連接對象有Connection這個與之前ODBC的Connection作用同樣,為數據庫連接對象。而PraparedStatement與Statement與ODBC中的command對象類似。都是用來運行SQL語句的。

查詢方法中用到的ResultSet則與之前用到的DataSet或者DataTable功能類似,這樣一聯系,似乎這個連接和使用過程變得簡單的很多吧!



怎樣利用JDBC連接並操作Oracle數據庫