<sup id="sjju3"><noscript id="sjju3"></noscript></sup>
    <big id="sjju3"></big>

  • <blockquote id="sjju3"></blockquote>
    <blockquote id="sjju3"></blockquote>

      <td id="sjju3"></td>

      <big id="sjju3"></big>
        <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
      1. jdbc实现连接和增删改查功能

         更新时间:2019年02月20日 10:53:46   作者:lxh5431   我要评论

        这篇文章主要为大家详细介绍了jdbc实现连接和基本的增删改查功能,具有一定的参考价值,感兴趣的小伙伴们可以参?#23478;?#19979;

        JDBC的定义

        JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

        jdbc的基本连接

        简单的说就是加载驱动,建立连接,然后进行查询和删除等语句的操作,在java中提供了java.sql的jar包,不过我现在用的是mysql的连接和实例,在这里基本在本地的服务器都是用到下面这个语句。

        Class.forName("com.mysql.jdbc.Driver");
        
          String url="jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8";
          String user="root";
          String password="root";

        加载和建立连接,这就是基本的一个语法结构,在连接数据库当然还有其他的属性可以设置,比如说最大的连接数了,和如何建立连接池,都可以在配置中用到,这里我就简单的介绍如何连接,后面跟的是这个连接的字符集,防止出现乱码。

        简单的增删改查

        简单的增删改查是每个开发者都会遇到的,毕竟我们整个系统真正的业务所在也是这几个简单的逻辑,但是在关系的连接和耦合性下就会变成复杂百倍的系?#24120;?#25152;以要懂得基本的就可以窥见更大系统的构建了,所以我现在要分析的只是基本的功能实现。

        首先连接好数据库之后,那就是创建查询语句,这里用到的是statment这个关键词,下面是代码的基本实现。

        package dbtest;
        
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.ResultSet;
        import java.sql.SQLException;
        import java.sql.Statement;
        import java.text.SimpleDateFormat;
        import java.util.ArrayList;
        import java.util.Date;
        import java.util.List;
        
        
        public class DbTest {
        
         public static void main(String[] args) {
          Employee employee1 =new Employee();
          employee1.setEmpno(555);
          employee1.setEname("hakly");
          employee1.setSal(5400);
          employee1.setHiredate(new Date());
        
          addEmployee(employee1);
          List<Employee>employees=getEmployees();
          for(Employee employee:employees){
           System.out.println(employee);
        
          }
        
          Employee employee =new Employee();
          employee.setEmpno(999);
          employee.setEname("jack");
          employee.setSal(5000);
          employee.setHiredate(new Date());
        
          addEmployee(employee);
        
         }
        
          public static List<Employee> getEmployees() {
          ResultSet rs=null;
          Connection conn=null;
          Statement stat=null;
          List<Employee> employees=new ArrayList<Employee>();
          try{
           Class.forName("com.mysql.jdbc.Driver");
        
        
          String url="jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8";
          String user="root";
          String password="root";
          conn= DriverManager.getConnection(url,user,password);
          stat=conn.createStatement();
          String sql="select * from emp";
           rs=stat.executeQuery(sql);
           Employee employee=null;
          while(rs.next()){
           employee=new Employee();
           employee.setEmpno(rs.getInt("empno"));
           employee.setEname(rs.getString("ename"));
           employee.setSal(rs.getDouble("sal"));
          employee.setHiredate(rs.getDate("hiredate"));
          employees.add(employee);
          }
        
        
          }catch(Exception e ){
           e.printStackTrace();
          }finally{
           try {
            if(conn!=null){
            conn.close();
           } 
            }catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
           }
          }
          return employees;
         }
          public static void addEmployee(Employee employee) {
           Connection conn = null;
           Statement stat = null;
           // 1.注册驱动程序
           try {
            Class.forName("com.mysql.jdbc.Driver");
        
            // 2.建立连接
            String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8";
            String user = "root";
            String password = "root";
            conn = DriverManager.getConnection(url, user, password);
        
            // 3.创建执行语句,发送sql命令
            stat = conn.createStatement();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String sql = "insert into emp(empno,ename,sal,hiredate) values(" + employee.getEmpno() + ",'"
              + employee.getEname() + "'," + employee.getSal() + ",'" + sdf.format(employee.getHiredate()) + "')";
        
            // 4.处理执行结果
            int i = stat.executeUpdate(sql);
           } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
           } finally {
            // 5.关闭资源
            try {
             if (conn != null) {
              conn.close();
             }
            } catch (SQLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            }
           }
          }
          public static void updateEmployee(Employee employee) {
           Connection conn = null;
           Statement stat = null;
           // 1.注册驱动程序
           try {
            Class.forName("com.mysql.jdbc.Driver");
        
            // 2.建立连接
            String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8";
            String user = "root";
            String password = "root";
            conn = DriverManager.getConnection(url, user, password);
        
            // 3.创建执行语句,发送sql命令
            stat = conn.createStatement();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String sql = "update emp set ename='"+employee.getEname()+"empno"+employee.getEmpno()+"sal"+employee.getSal();
            // 4.处理执行结果
            int i = stat.executeUpdate(sql);
           } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
           } finally {
            // 5.关闭资源
            try {
             if (conn != null) {
              conn.close();
             }
            } catch (SQLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            }
           }
          }
        
        }

        这里的代码很繁琐,但是没办法,为了更清新一点的去了解,这个过程是必须的,然后接下来就是进行简单的优化,虽然代码还是差不多,但是感觉上会更加简洁了 ,这里就要建立一个工具类了代码如下

        package dbtest;
        
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.SQLException;
        
        public class JdbcUtil {
         static String url = "jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8";
         static String user = "root";
         static String password = "root";
        
         static{
          try {
           Class.forName("com.mysql.jdbc.Driver");
          } catch (ClassNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          }
         }
         public static Connection getConnection() throws SQLException{
          String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8";
          String user = "root";
          String password = "root";
          return DriverManager.getConnection(url, user, password);
        
         }
         public static void free(Connection conn){
        
          try {
           if (conn != null) {
            conn.close();
           }
          } catch (SQLException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          }
         }
         }

        在这里,把数据库连接和异常处理,等工作都及合成一个工具类,然后再主函数调用就可以了,这就是面向对象的一个体现,当然还是会分析下关于主类的代码,要不然就太过于空洞了,下面要分析的主类代码如下

        package com.niit.jdbc;
        
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.ResultSet;
        import java.sql.SQLException;
        import java.sql.Statement;
        import java.text.ParseException;
        import java.text.SimpleDateFormat;
        import java.util.ArrayList;
        import java.util.Date;
        import java.util.List;
        
        public class EmployeeDao1 {
        
         public static void main(String[] args) throws ParseException {
        
          List<Employee> employees=getEmployees();
          for(Employee employee:employees){
           System.out.println(employee);
          }
        
          /*Employee employee = new Employee();
          employee.setEmpno(9999);
          employee.setEname("tom");
          employee.setSal(6000);
        
          SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
          employee.setHiredate(sdf.parse("2015-07-23"));
        
          //addEmployee(employee);
          //updateEmployee(employee);
          deleteEmployee(9999);*/
        
        
        
         }
        
         public static List<Employee> getEmployees() {
          Connection conn = null;
          Statement stat = null;
          ResultSet rs = null;
          List<Employee> employees = new ArrayList<Employee>();
          // 1.注册驱动程序
          try {
           //2.获取连接
           conn=JdbcUtil.getConnection();
        
           // 3.创建执行语句,发送sql命令
           stat = conn.createStatement();
           String sql = "select * from emp";
        
           // 4.处理执行结果
           rs = stat.executeQuery(sql);
           Employee employee = null;
           while (rs.next()) {
            employee = new Employee();
            employee.setEmpno(rs.getInt("empno"));
            employee.setEname(rs.getString("ename"));
            employee.setSal(rs.getDouble("sal"));
            employee.setHiredate(rs.getDate("hiredate"));
        
            employees.add(employee);
           }
        
          } catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          } finally {
           // 5.关闭资源
           JdbcUtil.free(conn);
          }
          return employees;
         }
        
         public static void addEmployee(Employee employee) {
          Connection conn = null;
          Statement stat = null;
          // 1.注册驱动程序
          try {
           //2.获取连接
           conn=JdbcUtil.getConnection();
        
           // 3.创建执行语句,发送sql命令
           stat = conn.createStatement();
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
           String sql = "insert into emp(empno,ename,sal,hiredate) values(" + employee.getEmpno() + ",'"
             + employee.getEname() + "'," + employee.getSal() + ",'" + sdf.format(employee.getHiredate()) + "')";
        
           // 4.处理执行结果
           int i = stat.executeUpdate(sql);
          } catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          } finally {
           // 5.关闭资源
           JdbcUtil.free(conn);
          }
         }
        
         public static void updateEmployee(Employee employee) {
          Connection conn = null;
          Statement stat = null;
          // 1.注册驱动程序
          try {
           //2.获取连接
           conn=JdbcUtil.getConnection();
        
           // 3.创建执行语句,发送sql命令
           stat = conn.createStatement();
        
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
           String sql = "update emp set ename='" + employee.getEname() + "',sal=" + employee.getSal() + ",hiredate='"
             + sdf.format(employee.getHiredate()) + "' where empno=" + employee.getEmpno();
        
           // 4.处理执行结果
           int i = stat.executeUpdate(sql);
          } catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          } finally {
           // 5.关闭资源
           JdbcUtil.free(conn);
          }
         }
        
         public static void deleteEmployee(int empno) {
          Connection conn = null;
          Statement stat = null;
          // 1.注册驱动程序
          try {
           //2.获取连接
           conn=JdbcUtil.getConnection();
        
           // 3.创建执行语句,发送sql命令
           stat = conn.createStatement();
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
           String sql = "delete from emp where empno="+empno;
        
           // 4.处理执行结果
           int i = stat.executeUpdate(sql);
          } catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          } finally {
           // 5.关闭资源
           JdbcUtil.free(conn);
          }
         }
        
        }
        

        这样看?#20808;?#23601;比较清晰和明了,不用分割开来去?#21019;?#30721;,只要调用到那个累才去照这个类的方法,这样就能够更加有利于检查和排错,维护的间接性的一个软件的奋斗的目标,虽然只是简单的优化,却能够减轻了我们写代码和维护的成本。

        总结

        通过本次编码,对面向对象的编程的开发有更加清晰的了解,当然对重构和优化的重要性有更深的了解,在这个软件里我学会的不仅是代码的书写,还学会了代码的重构不仅需要不断的提炼,还需要?#28304;?#30721;的细微的观察。

        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

        相关文章

        • SpringBoot JPA实现增删改查、分页、排序、事务操作等功能示例

          SpringBoot JPA实现增删改查、分页、排序、事务操作等功能示例

          本篇文章主要介绍了SpringBoot JPA实现增删改查、分页、排序、事务操作等功能示例,具有一定的参考价值,感兴趣的小伙伴们可以参?#23478;?#19979;。
          2017-03-03
        • spring cloud将spring boot服务注册到Eureka Server上的方法

          spring cloud将spring boot服务注册到Eureka Server上的方法

          本篇文章主要介绍了spring cloud将spring boot服务注册到Eureka Server上的方法,具有一定的参考价值,感兴趣的小伙伴们可以参?#23478;?#19979;
          2018-01-01
        • Java基于外观模式实现美?#31243;?#19979;食谱功能实例详解

          Java基于外观模式实现美?#31243;?#19979;食谱功能实例详解

          这篇文章主要介绍了Java基于外观模式实现美?#31243;?#19979;食谱功能,较为详细的讲述了外观模式的概念、原理并结合实例形似详细分析了Java基于外观模式实现美?#31243;?#19979;食谱功能的具体操作步骤与相关注意事项,需要的朋友可以参考下
          2018-05-05
        • Java设计模式之装?#25991;?#24335;(Decorator模式)介绍

          Java设计模式之装?#25991;?#24335;(Decorator模式)介绍

          这篇文章主要介绍了Java设计模式之装?#25991;?#24335;(Decorator模式)介绍,本文讲解了为什?#35789;?#29992;Decorator、如?#38382;?#29992;装?#25991;?#24335;、Jive中的Decorator实现等内容,需要的朋友可以参考下
          2015-03-03
        • Spring4如何自定义@Value功能详解

          Spring4如何自定义@Value功能详解

          这篇文章主要给大家介绍了关于Spring4如何自定义@Value功能的相关资?#24076;?#25991;中通过示例代码介绍的非常详细,对大家学习或者使用spring4具有一定的参考学习价值,需要的朋友们下面随着小编来一起学?#25226;?#20064;吧。
          2017-09-09
        • java编程 中流对象选取规律详解

          java编程 中流对象选取规律详解

          下面小编就为大家带来一篇java编程 中流对象选取规律详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
          2017-01-01
        • 十种JAVA排序算法实例

          十种JAVA排序算法实例

          本文件讲了十种JAVA排序方法(冒泡(Bubble)排序——相邻交换 、选择排序——每次最小/大排在相应的位置 、插入排序——将下一个插入已排好的序列中 、壳(Shell)排序——缩小增量 、归并排序 、快速排序 、堆排序 、拓扑排序 、锦标赛排序 、基数排序)的使用,并提供了实例代码可参考
          2013-11-11
        • Java常用工具类—集合排序

          Java常用工具类—集合排序

          这篇文章主要介绍了Java集合排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学?#25226;?#20064;吧
          2019-03-03
        • Java 抽象类定义与方法实例详解

          Java 抽象类定义与方法实例详解

          这篇文章主要介绍了java 抽象类与接口的区别介绍的相关资料,需要的朋友可以参考下...
          2017-04-04
        • java截取?#35745;?#31034;例

          java截取?#35745;?#31034;例

          这篇文章主要介绍了java截取?#35745;?#31034;例,把代码中的?#35745;?#36335;径改成自己的?#35745;?#36816;行就可以看到效果了,需要的朋友可以参考下
          2014-03-03

        最新评论

        2018白小姐一肖中特马
        <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
        <big id="sjju3"></big>

      2. <blockquote id="sjju3"></blockquote>
        <blockquote id="sjju3"></blockquote>

          <td id="sjju3"></td>

          <big id="sjju3"></big>
            <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
          1. <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
            <big id="sjju3"></big>

          2. <blockquote id="sjju3"></blockquote>
            <blockquote id="sjju3"></blockquote>

              <td id="sjju3"></td>

              <big id="sjju3"></big>
                <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
              1. 二肖中特公开验证 北京赛车多少本金包赢 上海天天彩选3 体彩顶呱刮2019新票 淘宝快3杀号 湖北快三一定牛-百度 极限平特一肖 内蒙古时时彩专家杀号 湖北快三走势图百度乐彩 爱彩票官网 新疆18选7官方网站 八仙过海心水论坛 爱彩乐河北十一选五开 贵州11选5任三遗漏号 云南11选5胆拖对照表