zoukankan      html  css  js  c++  java
  • jdbc编程

    jdbc编程基础

    jdbc是java程序连接个类型数据库的桥梁,其用法连接各数据库都差不多,用mysql为例说明。

    在进行jdbc编程开始之前,需要下载驱动包,可以去maven中央仓库下载。

    https://mvnrepository.com/ 

    搜索mysql的第一个就是的。

    选择5.x的版本。

    然后在eclipse里面导入jia包。

    先试着编写一个简单的jdbc连接的工具类,然后实现对jdbc数据库的增删改查的功能。

    jdbc的工具类

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class  JDBCUtils {
        //数据库连接信息
        private static String URL="jdbc:mysql://10.0.0.11:3306/demo?"
                + "useUnicode=true&characterEncoding=utf8&useSSL=true";
        private static String DRIVER="com.mysql.jdbc.Driver";
        private static String USER="root";
        private static String PASSWORD="admin.123";
        
        
        //通过反射加载类文件
        static {
            try {
                Class.forName(DRIVER);
            } catch (ClassNotFoundException e) {
                
                e.printStackTrace();
            }
        }
        
        public static Connection  getConnection() {
            try {
                return DriverManager.getConnection(URL, USER, PASSWORD);
            } catch (SQLException e) {
                
                e.printStackTrace();
            }
            return null;
        }
        
        public static void close(Connection conn) {
            if (conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    
                    e.printStackTrace();
                }
            }
        }
        
    }

    jdbc增加数据

    package com.liqh.JdbcTest;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import com.liqh.utils.JDBCUtils;
    
    /**
     * 
     * @author liqh
     * @version 创建时间:2019年5月24日 下午12:20:36
     * @Description: TODO
     */
    public class JdbcTestDemo01 {
        public static boolean insertEmp() throws Exception {
            PreparedStatement pst = null;
            Connection conn = JDBCUtils.getConnection();
            String sql = "INSERT INTO EMP VALUES  
    " + "        (1001, 'MILLER', 'CLERK',     7782,  
    "
                    + "        DATE_FORMAT(SYSDATE(), '%Y-%m-%d'), 13000, NULL, 10); ";
            pst = conn.prepareStatement(sql);
            int row = pst.executeUpdate();
            JDBCUtils.close(conn);
            return row > 0;
        }
    
        public static void main(String[] args) {
            try {
                if (insertEmp()) {
                    System.out.println("插入数据成功");
    
                } else {
                    System.out.println("插入数据失败");
                }
    
            } catch (Exception e) {
    
                e.printStackTrace();
            }
        }
    
    }

    jdbc修改数据并实现事务的功能

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import com.liqh.utils.JDBCUtils;
    
    /**
     * 
     * @author liqh
     * @version 创建时间:2019年5月24日 下午12:20:36
     * @Description: TODO
     */
    public class JdbcTestDemo02 {
        public static boolean insertEmp(double money) throws Exception {
            Connection conn = JDBCUtils.getConnection();
            //取消自动提交事务
            conn.setAutoCommit(false);
            boolean falg=true;
            String sql1 ="UPDATE emp SET deposit=1000-"+money+" WHERE ename='SMITH';";
            String sql2 ="UPDATE emp SET deposit=1000+"+money+" WHERE ename='ALLEN';";
            try {
                PreparedStatement pst1 = conn.prepareStatement(sql1);
                PreparedStatement pst2 = conn.prepareStatement(sql2);
                pst1.executeUpdate();
                pst2.executeUpdate();
                //提交事务
                conn.commit();
            } catch (Exception e) {
                falg=false;
                conn.rollback();
                e.printStackTrace();
            }
            finally {
                JDBCUtils.close(conn);
            }
            return falg;
        }
    
        public static void main(String[] args) {
            try {
                insertEmp(200);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    
    }

    jdbc删除一条数据和删除多条数据

    package com.liqh.JdbcTest;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.HashSet;
    import java.util.Set;
    
    import com.liqh.utils.JDBCUtils;
    
    /**
    * 
    * @author liqh
    * @version 创建时间:2019年5月24日 下午3:36:32
    * @Description: TODO
    */
    public class JdbcTestDemo03 {
        static boolean falg=false;
    /**
     *     
    * @Title: deletebatch  
    * @Description: 通过id删除多条数据 
    * @param @param empnos
    * @param @return
    * @param @throws Exception    参数  
    * @return boolean    返回类型  
    * @throws
     */
    public static boolean deletebatch(Set<Integer> empnos) throws Exception {
            //jdbc工具类得到connection对象
            Connection conn = JDBCUtils.getConnection();
            StringBuffer sql = new StringBuffer("delete from emp where empno in (");
            try {
                for (Integer empno : empnos) {
                    sql.append(empno+",");
                }
                //删除最后一个逗号
                sql.delete(sql.length()-1, sql.length());
                sql.append(")");
    //            conn.setAutoCommit(false);
                //预编译对象编译sql语句,将sql转化为字符串
                PreparedStatement pst = conn.prepareStatement(sql.toString());
                //执行更新操作
                pst.executeUpdate();
                //事务提交
    //            conn.commit();
                falg=true;
            } catch (SQLException e) {
                falg=false;
                //事务回滚
                e.printStackTrace();
            }
            return falg;    
        }
        /**
         * 
        * @Title: deleteEmp  
        * @Description: 通过id删除单条数据  
        * @param @param id
        * @param @return
        * @param @throws Exception    参数  
        * @return boolean    返回类型  
        * @throws
         */
        public static boolean deleteEmp(double id) throws Exception {
            
            //jdbc工具类得到connection对象
            Connection conn = JDBCUtils.getConnection();
            String sql="delete from emp where empno="+id+"";
            try {
                //预编译对象编译sql语句
                PreparedStatement pst = conn.prepareStatement(sql);
                //执行更新操作
                pst.executeUpdate();
    
                falg=true;
            } catch (SQLException e) {
                falg=false;
                e.printStackTrace();
            }finally {
                JDBCUtils.close(conn);
            }
            return falg;    
        }
        
        public static void main(String[] args) throws Exception {
        //    System.out.println(deleteEmp(1001));
            Set<Integer> empnos =new HashSet<>();
            empnos.add(7900);
            empnos.add(7876);
            System.out.println(deletebatch(empnos));
        }
    
    }

    jdbc查询单条和多条数据

    package com.liqh.JdbcTest;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    
    import com.liqh.utils.JDBCUtils;
    
    /**
     * 
     * @author liqh
     * @version 创建时间:2019年5月24日 下午12:20:36
     * @Description: jdbc查询数据
     */
    public class JdbcTestDemo04 {
        /**
         * 
        * @Title: selectById  
        * @Description: TODO(这里用一句话描述这个方法的作用)  
        * @param @param id    参数  
        * @return void    返回类型  
        * @throws
         */
        public static void selectById(Integer id) {
            Connection conn = JDBCUtils.getConnection();
            String sql="SELECT empno,ename,job,sal,hiredate FROM emp WHERE empno='"+id+"';";
            try {
                PreparedStatement pts = conn.prepareStatement(sql);
                ResultSet resultSet = pts.executeQuery();
                if (resultSet.next()) {
                    System.out.println("个人编号:"+resultSet.getObject("empno")+"	姓名:"+resultSet.getObject("ename")
                    +"	工作:"+resultSet.getObject("job")+"	工资:"+resultSet.getObject("sal")+"	入职日期:"+resultSet.getObject("hiredate"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                JDBCUtils.close(conn);
            }
        }
        /**
         * 
        * @Title: selectSplitAll  
        * @Description: jdbc where条件分页查询所有信息
        * @param @param value
        * @param @param cp
        * @param @param ls
        * @param @throws Exception    参数  
        * @return void    返回类型  
        * @throws
         */
        public static void selectSplitAll(String value,Integer cp,Integer ls) throws Exception {
            ResultSet resultSet=null;
            PreparedStatement pts=null;
            Connection conn = JDBCUtils.getConnection();
            //分页查询的sql语句
            String sql="SELECT empno,ename,job,sal,hiredate FROM emp where ename LIKE '%"+value+"%'"
                            + "LIMIT "+(cp-1)*ls+","+ls+";";
            System.out.println(sql);
            try {
                pts = conn.prepareStatement(sql);
                resultSet = pts.executeQuery();
                while(resultSet.next()) {
                    System.out.println("个人编号:"+resultSet.getObject("empno")+"	姓名:"+resultSet.getObject("ename")
                    +"	工作:"+resultSet.getObject("job")+"	工资:"+resultSet.getObject("sal")+"	入职日期:"+resultSet.getObject("hiredate"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                resultSet.close();
                pts.close();
                JDBCUtils.close(conn);
            }
        }
        public static void main(String[] args) throws Exception {
    //        selectById(7369);
            selectSplitAll("l", 1, 3);
            
        }
    }

    结果

    SELECT empno,ename,job,sal,hiredate FROM emp where ename LIKE '%l%'LIMIT 0,3;
    个人编号:7499    姓名:ALLEN    工作:SALESMAN    工资:1600.0    入职日期:1981-02-20
    个人编号:7698    姓名:BLAKE    工作:MANAGER    工资:2850.0     入职日期:1981-03-01
    个人编号:7782    姓名:CLARK    工作:MANAGER    工资:2450.0     入职日期:1981-07-09
  • 相关阅读:
    模糊搜索工具fzf的安装和使用
    ubuntu状态栏位置调整
    毕业相关事项
    vimium拓展程序使用技巧
    python文件生成exe可执行文件
    解决pycharm无法识别PyQt4.QtCore的问题
    pyqt4安装以及pycharm下环境配置
    动态规划——最小编辑代价
    深度学习绘图工具
    Maven Spring JUnit 在Maven Clean Install时报
  • 原文地址:https://www.cnblogs.com/lqhhome/p/10919929.html
Copyright © 2011-2022 走看看