java學習日記 JDBC

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();
        }
    }
    }

}
JDBC升級版

咱們用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);
        

    }

}
相關文章
相關標籤/搜索