JDBC java date base connectivity java數據庫鏈接java
JDBC 整體包括兩大部份內容sql
第一部分 java.sal.* JDBC基礎內容數據庫
java.sql.Connection ---數據庫鏈接對象:到數據庫的鏈接安全
做用:鏈接數據庫oracle
java.sql.statement --- 語句對象:表明程序須要執行的sql語句,性能和安全性很差。app
做用:處理sql語句ide
java.sql.PreparedStatement--- 預編譯語句對象性能
性能和安全性更好ui
java.sql.ResultSet ---結果集對象: 表明sql語句執行的結果url
結果處理
java.sql.DriverManager ---驅動管理器:管理驅動,負責具體連接目標數據庫
java.sql.ResultSetMateDate ---結果集元數據(結果集描述對象)
做用: 描述ResultSet相關信息
第二部分 java.sql.* JDBC 拓展內容
java.sql.DataSource ---數據庫鏈接池
驅動jar 是各個數據庫廠商爲java準備 的讓其經過jar包來實現對本身數據的操做
在本代碼敲以前應該先導入驅動jar包,ojdbc5 或者ojbdc6
基本的Oracle數據庫鏈接
public boolean addAb01()throws Exception { //1 定義驅動串 private static final String driver="oracle.jdbc.driver.OracleDriver"; //2.定義連接串 private static final String url="jdbc:oracle:thin:@localhost:1521:orcl"; //3.加載驅動器 Class.forName(driver); //4.建立鏈接 /** * "admin" 是我要鏈接的數據庫帳號 * "admin1234" 是我要鏈接的數據庫帳號對應的口令 也就是密碼 */ Connection conn=DriverManager.getConnection(url,"admin","admin1234"); //5.定義sql語句 /** * 個人表已經建立完了 我是在添加數據 */ StringBuilder sql=new StringBuilder() .append("INSERT INTO AB01(AAB101,AAB102,AAB103,AAB104,AAB105,") .append(" AAB106,AAB107,AAB108,AAB109,AAB110,") .append(" AAB111,AAB112,AAB113,AAB114,AAB115,") .append(" AAB116,AAB117,AAB118,AAB119,AAB120)") .append(" VALUES(A_AB01.NEXTVAL,?,?,?,?,") .append(" TO_DATE(?,'YYYY-MM-DD'),?,?,?,?,") .append(" ?,?,?,?,?,") .append(" ?,?,SYSDATE,?,?)") ; //6.編譯sql語句 PreparedStatement pstm=conn.prepareStatement(sql.toString()); //7.給變量賦值,在定義sql語句時,將其中的變量所有用問好替代 pstm.setObject(1, "2001"); pstm.setObject(2, "王徽"); pstm.setObject(3, "55555"); pstm.setObject(4, "1"); //row2 pstm.setObject(5, "1999-12-26"); pstm.setObject(6, "11"); pstm.setObject(7, "青島黃島"); pstm.setObject(8, "中國膠州"); pstm.setObject(9, "王徽"); //row3 pstm.setObject(10, "110"); pstm.setObject(11, "02"); pstm.setObject(12, "**網"); pstm.setObject(13, "山東**大學"); pstm.setObject(14, "02"); //row4 pstm.setObject(15, "山東**大學"); pstm.setObject(16, "01"); pstm.setObject(17, "50"); pstm.setObject(18, "01"); //8.執行sql 並將結果 返回 他返回的是執行的行數,大於0說明成功即大於0爲true反之爲false return pstm.executeUpdate()>0; }
這樣一次基本的oracle數據庫就鏈接上啦 ,在這以前你須要導入一個連接用的驅動jar 。
這只是針對一次連接,不須要考慮內存虛耗之類的問題,若是屢次連接 就不能這樣寫了,,能夠將連接部分拿出來寫一個靜態塊 ,new一個類是就創建鏈接,再也不重重複創建鏈接,另外操做完畢後,應該關閉pstm.close()與conn.close()將他們倆關閉
要放到一個final中,這樣無論有沒有異常拋出 最後都是將其關閉。可是要注意的是 pstm與conn的順序,先關pstm後關閉conn,還一點將他們倆放在一塊兒,一旦pstm出現異常就會結束方法,conn並不能關閉,因此要給他們分別try-catch,這樣就能夠確保關閉了
import java.sql.Connection; import java.sql.PreparedStatement; import java.util.Map; import com.neusoft.system.db.DBUtils; public class Ab02Service { public boolean addAb01(Map<String, Object> dto)throws Exception { //定義JDBC接口變量 Connection conn=null; PreparedStatement pstm=null; try { // 建立連接對象 conn=DBUtils.getConnection(); //3.定義SQL語句 StringBuilder sql=new StringBuilder() .append("INSERT INTO AB01(AAB101,AAB102,AAB103,AAB104,AAB105,") .append(" AAB106,AAB107,AAB108,AAB109,AAB110,") .append(" AAB111,AAB112,AAB113,AAB114,AAB115,") .append(" AAB116,AAB117,AAB118,AAB119,AAB120)") .append(" VALUES(S_AB01.NEXTVAL,?,?,?,?,") .append(" TO_DATE(?,'YYYY-MM-DD'),?,?,?,?,") .append(" ?,?,?,?,?,") .append(" ?,?,SYSDATE,?,?)") ; ; //4.編譯SQL語句 pstm=conn.prepareStatement(sql.toString()); //5.參數賦值 pstm.setObject(1, dto.get("aab102")); pstm.setObject(2, dto.get("aab103")); pstm.setObject(3, dto.get("aab104")); pstm.setObject(4, dto.get("aab105")); pstm.setObject(5, dto.get("aab106")); pstm.setObject(6, dto.get("aab107")); pstm.setObject(7, dto.get("aab108")); pstm.setObject(8, dto.get("aab109")); pstm.setObject(9, dto.get("aab110")); pstm.setObject(10, dto.get("aab111")); pstm.setObject(11, dto.get("aab112")); pstm.setObject(12, dto.get("aab113")); pstm.setObject(13, dto.get("aab114")); pstm.setObject(14, dto.get("aab115")); pstm.setObject(15, dto.get("aab116")); pstm.setObject(16, dto.get("aab117")); pstm.setObject(17, dto.get("aab119")); pstm.setObject(18, dto.get("aab120")); //6.返回 return pstm.executeUpdate()>0; } finally { try { pstm.close(); } catch (Exception e) { e.printStackTrace(); } try { conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }
咱們用map來實現數據的放入:
public class Ab01ServicesTest { public static void main(String[] args) { Ab02Service abs=new Ab02Service(); boolean tag=false; Map<String, Object> map=new HashMap<>(); map.put("aab102", "119"); map.put("aab103", "宋振華"); map.put("aab104", "110"); map.put("aab105", "1"); map.put("aab106", "1995-03-10"); map.put("aab107", "05"); map.put("aab108", "濰坊"); map.put("aab109", "淄博"); map.put("aab110", "11"); map.put("aab111", "8792"); map.put("aab112", "02"); map.put("aab113", "01"); map.put("aab114", "03"); map.put("aab115", "05"); map.put("aab116", "01"); map.put("aab117", "03"); map.put("aab119", "200"); map.put("aab120", "1"); try { tag=abs.addAb01(map); } catch (Exception e) { e.printStackTrace(); } System.out.println(tag); } }