JDBC增删改查手册文档

  • 更新时间:
  • 2274人关注
  • 点击下载

这是一个不错的JDBC类学习资源,由阎飞光 提供,主要知识点是关于JDBC手册、JDBC文档、JDBC的内容,已被746人关注,同类资源中评分为9.5分。

资源详情相关推荐
  • 大小:589 KB
  • 类别:JDBC
  • 格式:PDF
  • 编辑:万文德
  • 热度:175
  • Sharding-Jdbc在springboot中配置
  • SpringBoot整合oracle的ojdbc8-12.2.0.1的jar包
  • 精选笔记:jdbc实现连接和增删改查功能

    12小时54分钟前回答

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

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

    简单的增删改查

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

    首先连接好数据库之后,那就是创建查询语句,这里用到的是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);
      }
     }
    
    }
    

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

    总结

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

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

    展开阅读

    相关资源

    • Java EE企业级应用开发教程

      Java EE企业级应用开发教程

      这本书详细讲解了Java EE中Spring、Spring MVC和MyBatis三大框架,采用了大量案例,帮助读者学习和理解SSM的核心技术,是一本J2EE程序设计的轻量级开发教程

      大小:127.1 MBJava开发

      立即下载
    • Java执行JavaScript代码教程

      主要为大家详细介绍了Java执行JavaScript代码的具体操作方法,感兴趣的小伙伴们可以参考一下

      大小:29 KBJava

      立即下载
    • Java函数式编程

      Java函数式编程

      这是一本关于函数式编程的书,由浅入深地介绍了函数式编程的思维方式,非常适合对Java有所了解的程序员,欢迎下载

      大小:205.8 MBJava编程

      立即下载
    • JavaScript语言精粹

      JavaScript语言精粹

      JavaScript曾是全世界非常容易误解的言语,由于它肩负过多的特点,包含槽糕的互动和不成功的设计方案,但伴随着Ajax的来临,JavaScript从极受误会的程序语言演化为十分时髦的言语,这除开好

      大小:9.9 MBJavaScript

      立即下载
    • Java软件结构与数据结构

      Java软件结构与数据结构

      Java软件结构与数据结构(第4版) 由著名作者JohnLewis(刘易斯)编写,本书始终以良好软件工程实践为准则,以Java为语言,介绍数据结构与算法的相关知识和具体实现,强调完美软件设计技巧的重要

      大小:129 MBJava

      立即下载
    • 零基础Java学习笔记

      零基础Java学习笔记

      14小时视频同步课程,手把手教你学编程 82个学习二维码,手机、PC同步学习 135个同步实例,强化知识理解 119个学习笔记,轻松化解学习障碍 本书从入门学习者的角度出发,通过通俗易懂的语言、丰富典型的实例,循序渐进地使读者在实践中学习Java编程知识,并提升自己的实际开发能力。全书共有17章,具体内容包括初识Java、Java语言基础、运算符与流程控制、面向对象基础、继承与多态、接口、异常处理、常用类、JSP基本语法、JSP内置对象、Servlet技术

      大小:110 MBJava

      立即下载
    • Java编程思维

      Java编程思维

      本书从编程基础知识入手,用Java代码示例诠释计算机科学概念,教读者掌握“解决问题”的思维方式,具备Java编程思想,实用的计算机入门教程,无任何编程经验者的理想选择

      大小:3.0 MBJava编程

      立即下载

    学习笔记

    3小时4分钟前回答

    Java基于jdbc实现的增删改查操作示例

    本文实例讲述了Java基于jdbc实现的增删改查操作。分享给大家供大家参考,具体如下: 增删改操作: package java_web;import java.sql.DriverManager;import java.sql.SQLException;import com.mysql.jdbc.Connection;import com.mysql.jdbc.Statement;/*** jdbc CURD* @author Administrator**/public class rbacDemo {public final static String URL="jdbc:mysql://localhost:3306/test";public final static String USERNAME="root";public final static String PASSWORD="";public final static String DRIVER="com.mysql.jdbc.Driver";/*** 插入*/public static void insert(){try {Class.forName(DRIVER);Connection conn = (Connection) DriverManager.getConnection(URL,USERNAME,PASSWORD);String sql = "insert into test(name,sex)values('fifi2',1),('fifi3',3)";Statement state = (Statement) conn.c……