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
  • 相关阅读:
    suse12安装详解
    Centos7上部署openstack mitaka配置详解(将疑难点都进行划分)
    菜鸟帮你跳过openstack配置过程中的坑[文末新添加福利]
    openstack中dashboard页面RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable.
    Multiple network matches found for name 'selfservice', use an ID to be more specific.报错
    查看 SELinux状态及关闭SELinux
    SELinux深入理解
    IP地址、子网掩码、网络号、主机号、网络地址、主机地址
    Oracle job procedure 存储过程定时任务
    POI文件导出至EXCEL,并弹出下载框
  • 原文地址:https://www.cnblogs.com/lqhhome/p/10919929.html
Copyright © 2011-2022 走看看