java学习日记 JDBC

JDBC  java date base connectivity  java数据库连接

JDBC 总体包括两大部分内容

第一部分 java.sal.* JDBC基础内容

 java.sql.Connection   ---数据库连接对象:到数据库的连接

            作用:连接数据库

java.sql.statement    ---  语句对象:代表程序需要执行的sql语句,性能和安全性不好。

            作用:处理sql语句

java.sql.PreparedStatement--- 预编译语句对象

            性能和安全性更好

java.sql.ResultSet     ---结果集对象: 代表sql语句执行的结果

            结果处理

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

    }

}

 

posted @ 2017-08-28 19:37  窦光大大存大大凯  阅读(205)  评论(0编辑  收藏  举报