zoukankan      html  css  js  c++  java
  • JDBC

    概要:数据库连接,数据库操作,代码规范化

    平台及工具:mysql,eclipse ,jdk8

    连接驱动:

    win32位:http://pan.baidu.com/s/1c00fZ7i

    ubunut : http://pan.baidu.com/s/1c0Ap1NM

    (记得导入)

    连接:

        private final static String url = "jdbc:mysql://localhost:3306/test";
        private final static String driver = "com.mysql.jdbc.Driver";
        private final static String user = "root",password= "******";

      Calss.forName(driver);

        Connection con =null;

      con = DriverManger.getConnection(url,user,password);

      测试连接是否成功 : 判断con 是否为空

    操作:

    主要的是用Statement 对象,将SQL语句注入到数据库

    对于简单的语句,用Statement对象,对于IN参数的用PreparedStatement 对象,而CallableStatement对象处理带OUT参数的.

    下面分别介绍:

      1.对于简单的,用Statement.

      String sql = "select * from where id="+id;                 //数据库的查询语句

      Statement st = con.createStatement();                  //通过con连接获得语句对象

      ResultSet rt = st.executeQurey(sql);                    //获得查询的结果

      st.close();rt.close();con.close();                      //释放

      (在使用Statement 对象中的方法之前应该先处理rt ,不然,将丢失查询的内容)    

      通过rt.getInt("字段值")获得当前查到的条目的信息,还有类似的getString("字段值")

      2.对于带IN参数的语句,用PreparedStatement对处理.

      String sql = "insert into 表名(字段1,字段2,....)" values(?,?,.......); //数据库的插入语句

      PreparedStatement pst = (PreparedStatement)con.PreparedStatement(sql); //创建对象

      pst.setInt(1,123);

      pst.setString(2,"asd");

      .

      .....

      pst.executeUpdate();      //更新 ,或提交

      pst.close();

      3.略(以后补充)

    代码规范化:

    代码规范化主要是:

      异常规范化处理,而不是简单的throws.

      操作规范化(简便) 将一些经常用到的代码写到一个类里面(定义成静态)(封装),以后如果用到,就可以直接导入调用

                避免重复写熟的不能再熟的代码(当然,一开始还是要自己动手的,优秀的程序员都这样做).

    这里,可以数据库的一个表抽象成一个类,将对数据库的操作抽象成一个接口(当然还是要实现的,不然怎么用呢),包括增删查修等操作.同时这里也将对数据库驱动加载,连接,释放,都封装在了一个类里面了.

    博客贴代码,短的话,是为了方便观看;长的话就有点装了,那稍稍装一下吧^_^! 

    简单的操作也就这么多了.呵呵

    最下面有源码地址

    DBOperator

     1 package cn.hpu.jdbc.util;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.ResultSet;
     6 import java.sql.SQLException;
     7 //import com.mysql.jdbc.Statement;
     8 import  java.sql.Statement;;
     9 
    10 public class DBOperator {
    11     private final static String url = "jdbc:mysql://localhost:3306/test";
    12     private final static String driver = "com.mysql.jdbc.Driver";
    13     private final static String user = "root",password= "******";//* 表示你自己的密码
    14     
    15     static {
    16         try {
    17             Class.forName(driver);
    18         } catch (ClassNotFoundException e) {
    19             // TODO Auto-generated catch block
    20             System.out.println("驱动加载异常!");
    21             e.printStackTrace();
    22         }
    23     }///加载一次驱动
    24     
    25     public static Connection getConnection(){
    26         Connection con = null;
    27         try {
    28             con = DriverManager.getConnection(url,user,password);
    29         } catch (SQLException e) {
    30             // TODO Auto-generated catch block
    31             System.out.println("连接数据库异常!");
    32             e.printStackTrace();
    33         }
    34         return con;
    35     }
    36     
    37     public static void close(ResultSet rt,Statement st,Connection con){
    38         try{
    39                 if(rt!=null) rt.close();
    40                 if(st!=null)   st.close();
    41                 if(con!=null) con.close();
    42         }catch(Exception e){
    43             e.printStackTrace();
    44         }
    45     }
    46     
    47     public static void close(Statement st, Connection conn)
    48     {
    49         close(null,st,conn);
    50     }
    51 }

    StuManger 接口

     1 package cn.hpu.jdbc.serve;
     2 
     3 import cn.hpu.jdbc.model.Studnet;
     4 
     5 public interface StuManger {
     6     
     7     public  boolean  add(Studnet stu);
     8     public boolean del(int id );
     9     public boolean update(Studnet stu);
    10     public Studnet qur(int id );
    11     
    12 }

    接口实现

      1 package cn.hpu.jdbc.serve;
      2 import java.sql.Connection;
      3 
      4 import java.sql.ResultSet;
      5 
      6 import cn.hpu.jdbc.model.Studnet;
      7 import cn.hpu.jdbc.util.DBOperator;
      8 
      9 import com.mysql.jdbc.PreparedStatement;
     10 import com.mysql.jdbc.Statement;;
     11 
     12 public class StuMangerImplement implements StuManger{
     13     
     14     private Studnet stu;
     15 
     16     @Override
     17     public boolean add(Studnet stu) {
     18         // TODO Auto-generated method stub
     19         
     20         String sql=null;
     21         PreparedStatement pst = null ;
     22 
     23         boolean flag = false ;
     24         Connection conn = null ;
     25         try {
     26             conn = DBOperator.getConnection();
     27             sql = "insert into stu (id ,name,tel ) values(?,?,?)";
     28             pst = (PreparedStatement) conn.prepareStatement(sql);
     29             pst.setLong(1, stu.getId());
     30             pst.setString(2, stu.getName());
     31             pst.setString(3,stu.getTel());
     32             int row =pst.executeUpdate();
     33             if(row >0) flag=true;
     34             
     35         } catch (Exception e) {
     36             // TODO: handle exception
     37             e.printStackTrace();
     38         }finally {
     39             DBOperator.close((Statement) pst, conn);
     40         }
     41         return flag;
     42     }
     43 
     44     @Override
     45     public boolean del(int id) {
     46         // TODO Auto-generated method stub
     47         boolean flag = false ;
     48         PreparedStatement pst =null;
     49         Connection conn =null ;
     50         String sql=null;
     51         
     52         try {
     53             conn = DBOperator.getConnection();
     54             sql = "delete from stu where id=?";
     55             pst = (PreparedStatement) conn.prepareStatement(sql);
     56             pst.setLong(1, id);
     57             
     58             int rows = pst.executeUpdate();
     59             if(rows>0) flag=true ;
     60             
     61         } catch (Exception e) {
     62             // TODO: handle exception
     63             e.printStackTrace();
     64         }finally {
     65             DBOperator.close( pst, conn);
     66         }
     67         
     68         return flag;
     69     }
     70 
     71     @Override
     72     public boolean update(Studnet stu) {
     73         // TODO Auto-generated method stub
     74         boolean flag=false ;
     75         PreparedStatement pst = null;
     76         Connection conn = null;
     77         String sql =null;
     78         
     79         try {
     80             conn = DBOperator.getConnection();
     81             sql = "update stu set tel=?,name=? where id=? ";
     82             pst = (PreparedStatement) conn.prepareStatement(sql);
     83             pst.setString(1,stu.getTel());
     84             pst.setString(2, stu.getName());
     85             pst.setLong(3, stu.getId());
     86             int row = pst.executeUpdate();
     87             if(row > 0)
     88                 flag =true ;
     89         } catch (Exception e) {
     90             // TODO: handle exception
     91             e.printStackTrace();
     92         }finally{
     93             DBOperator.close(pst, conn);
     94         }
     95         return flag;
     96     }
     97 
     98     @Override
     99     public Studnet qur(int id) {
    100         
    101 //        boolean flag=false ;
    102         java.sql.Statement st = null;
    103         Connection conn = null;
    104         String sql =null;
    105         ResultSet rt = null;
    106         stu = new Studnet();
    107         try {
    108             conn = DBOperator.getConnection();
    109             sql = "select  * from stu where id="+id;
    110             st=conn.createStatement();
    111             rt = st.executeQuery(sql);        
    112             if(rt.next())
    113             {
    114                 stu.setId(rt.getInt("id"));
    115                 stu.setName(rt.getString("name"));
    116                 stu.setTel(rt.getString("tel"));
    117             }//
    118             
    119         } catch (Exception e) {
    120             // TODO: handle exception
    121             e.printStackTrace();
    122         }finally{
    123             DBOperator.close(st, conn);
    124         }
    125         return stu ;
    126     }//返回特定id的学生的信息
    127 
    128 }

    还有学生的信息的类及测试类,就不多贴了

    相关源码:http://pan.baidu.com/s/1jG8brX8

  • 相关阅读:
    springboot嵌入式servlet容器的自动配置以及原理
    简单认识springboot的错误处理机制
    使用springboot来编写web项目的一些实现
    spring-cloud-starter-openfeign 源码详细讲解
    简述application.properties和application.yml 以及 @ConfigurationProperties 和@PropertySource @Value 和@ImportResource的用法,区别
    Ribbon源码分析(二)-- 服务列表的获取和负载均衡算法分析
    git的详细使用,项目创建到同步远程仓库,版本回退,忽略文件,分支创建,分支合并,分支名称修改,冲突解决,项目迁移
    Ribbon源码分析(一)-- RestTemplate 以及自定义负载均衡算法
    eureka源码--服务的注册、服务续约、服务发现、服务下线、服务剔除、定时任务以及自定义注册中心的思路
    eureka集群的搭建
  • 原文地址:https://www.cnblogs.com/hpulfc/p/4665727.html
Copyright © 2011-2022 走看看