zoukankan      html  css  js  c++  java
  • java JDBC

    1.什么是JDBC?

    JDBC全称为java data base connectivity(java 数据连接)连接数据库的桥梁,由 java语言编写的类和接口组成。可以为多种数据库提供统一的访问。

    2.jdbc  的安装步骤:

    (1)进入mysql 的官网下载java与mysql 的连接器:https://dev.mysql.com/downloads/connector/j/

    (2)在eclipse 中创建一个java工程 ,在在这个工程中创建一个文件夹(lib),如图

     

    (2)解压文件,复制当中的jar文件到lib 文件中

    (3)配置jdbc文件

     3.JDBC 在使用中常见的有以下三类:

    JDBC-ODBC 桥连接:是SUN 在JDK的开发包中提供的最标准的一套JDBC 操作类库,使用的时候将JDBC-ODB-数据库,中间要经过一个ODBC 的连接,那么就意味着整体的性能将会降低,所以在开发中是绝对不会去使用JDBC-ODBC的连接方式的。

    JDBC 连接,使用各个数据库提供商给定的数据库驱动程序,完成JDBC的开发,使用的时候需要在classpath中配置数据库的驱动程序

    JDBC 网络连接:主要使用通过网络连接数据库

    4.JDBC 的操作步骤

    在进行JDBC 操作的时候可以按照以下的步骤完成:

    1、加载数据库驱动程序,加载的时候需要将驱动程序配置到classpath之中

    2、连接数据库,通过Connection 接口和 DriverManager 类完成

    3、操作数据库,通过Statement(声明)、PreparedStatement(事先准备好的声明)、ResultSet(结果集) 三个接口完成

    4、关闭数据库,在实际开发中数据库资源非常有限,操作完之后必须关闭

    5。数据库连接操作

    在JDBC 的操作中,如果要想进行数据库的连接,则必须按照以上的几步完成

    1、通过Class.forName()加载数据库的驱动程序

    2、通过DriverManager 类进行数据库的连接,连接的时候要输入数据库的连接地址、用户名、密码

    3、通过Connection 接口接收连接

    package com.j1702.db;

    import java.sql.*;  

    public class DBUtil {

      private static final String URL="jdbc:mysql://127.0.0.1:3306/jdbc_test";

      private static final String USER="root";

      private static final String PASSWORD="";

      public static void main(String[] args)throws Exception {

    //1.加载mysql驱动

      Class.forName("com.mysql.jdbc.Driver");

      //2.获得数据库链接对象conn

      Connection conn=DriverManager.getConnection(URL,USER,PASSWORD);

           //3.创建查询语句

      Statement stmt=conn.createStatement();

      //4.stmt 执行 sql 语句

         ResultSet res =stmt.executeQuery("select * from Student");

        //5.遍历输出结果集

         while (res.next()){

         System.out.println("id:"+res.getInt("id")+",姓名:"+res.getString("name")+",年龄:"+res.getInt("age"));

              }

      }

     

    }

    6.MVC 三层架构模式

    7.java JDBC mvc(三层架构)代码实例:

    (1)db层M:DBUtil.java 获取数据库的连接(工具类)

    package com.j1702.db;

    import java.sql.*;

    public class DBUtil {

      private static final String URL="jdbc:mysql://127.0.0.1:3306/jdbc_test";

      private static final String USER="root";

      private static final String PASSWORD="";

      

    private static Connection conn = null;

    static {

     

    try {

    // 1.加载mysql驱动

    Class.forName("com.mysql.jdbc.Driver");

    // 2.获得数据库链接对象conn

    setConn(DriverManager.getConnection(URL, USER, PASSWORD));

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

      }

    public static Connection getConn() {

    return conn;

    }

    public static void setConn(Connection conn) {

    DBUtil.conn = conn;

    }

    }

    (2)  模型层M:Student.java 类,和数据库字段相对应

    package com.j1702.model;
    
     
    
    public class Student {
    
     private Integer id;
    
     private String  name;
    
     private Integer age;
    
     private String  address;
    
    public String getAddress() {
    
    return address;
    
    }
    
    public void setAddress(String address) {
    
    this.address = address;
    
    }
    
    public Integer getId() {
    
    return id;
    
    }
    
    public void setId(Integer id) {
    
    this.id = id;
    
    }
    
    public String getName() {
    
    return name;
    
    }
    
    public void setName(String name) {
    
    this.name = name;
    
    }
    
    public Integer getAge() {
    
    return age;
    
    }
    
    public void setAge(Integer age) {
    
    this.age = age;
    
    }
    
     
    
     
    
    }
    View Code

    (3)dao层:StudentDao.java 增删改查方法。

    package com.j1702.dao;
     import java.sql.*;
    import java.util.*;
    
    import com.j1702.db.DBUtil;
    import com.j1702.model.Student;
    
    
    public class StudentDao {
        public static void main(String[] args) throws Exception{
            Student stu =new Student();
            stu.setName("翠花");
            stu.setAge(21); 
            stu.setId(1002); 
            //update(stu);
            //query(stu);
            //add(stu);
    ///    delete(1005);
            //queryWithId(1004);
            
            
            Map<String,Object> map = new HashMap<String,Object>();
              map.put("key", "name");
            map.put("value","'张全蛋'");
            Map<String,Object> map2 = new HashMap<String,Object>();
            map2.put("key", "age");
            map2.put("value", 25);
            List<Map<String,Object>> li= new ArrayList<Map<String,Object>>();
            li.add(map);
            li.add(map2);
            
            queryWithParam(li);
        }
        
        
       //1.增
        public static void add(Student stu) throws Exception{
            //通过工具类,获取数据库链接对象
            Connection conn= DBUtil.getConn();
            //创建 sql 语句
            String sql = "insert Student (name,age) value (?,?)";
            //创建 预加载 的sql 语句执行对象
            PreparedStatement ptmt=conn.prepareStatement(sql);
            //给名字赋值
            ptmt.setString(1, stu.getName());
            //给年龄赋值
            ptmt.setInt(2, stu.getAge());
            
            
            //执行 sql 语句
            ptmt.execute();
    //        if(ptmt.execute()){
    //        System.out.println("数据插入到数据库成功");
    //        }else{
    //            System.out.println("数据插入到数据库失败");
    //        }
        }
        //2.删
        public static  void delete(Integer id) throws Exception{
            //通过工具类,获取数据库链接对象
                    Connection conn= DBUtil.getConn();
                    //创建 sql 语句
                    String sql = " delete  from Student where id =?";
                    //创建 预加载 的sql 语句执行对象
                    PreparedStatement ptmt=conn.prepareStatement(sql);
                    //给名字赋值
                    ptmt.setInt(1,id);
                    
                    ptmt.execute();
            
            
        }
        //3.改
        public static void update(Student stu) throws Exception{
            //通过工具类,获取数据库链接对象
            Connection conn= DBUtil.getConn();
            //创建 sql 语句
            String sql = "update Student  set name=?,age=? where id =?";
            //创建 预加载 的sql 语句执行对象
            PreparedStatement ptmt=conn.prepareStatement(sql);
            //给名字赋值
            ptmt.setString(1, stu.getName());
            //给年龄赋值
            ptmt.setInt(2, stu.getAge());
            
            ptmt.setInt(3, stu.getId());
            
            //执行 sql 语句
            ptmt.execute();
            
        }
        //4.查所有
        public static void query(Student stu ) throws Exception{
            //通过工具类,获取数据库链接对象
            Connection conn= DBUtil.getConn();
            //创建 sql 语句
            String sql = "select * from Student";
        //创建 预加载 的sql 语句执行对象
            Statement stmt=conn.createStatement();
        ResultSet rs=stmt.executeQuery(sql);
        
        while(rs.next()){
            System.out.println("id:"+rs.getInt("id")+"	 	name:"+rs.getString("name")+"	age"+rs.getInt("age"));
        }
    
            
        }
        //5.查某个
        public static void queryWithId(Integer id) throws Exception{
            
            Connection conn= DBUtil.getConn();
            //创建 sql 语句
            String sql = "select * from Student  where id=?";
        //创建 预加载 的sql 语句执行对象
            PreparedStatement ptmt= conn.prepareStatement(sql);
            ptmt.setInt(1, id);
        ResultSet rs=ptmt.executeQuery();
        
        while(rs.next()){
            System.out.println("id:"+rs.getInt("id")+"	 	name:"
        +rs.getString("name")+"	age:"+rs.getInt("age"));
        }
            
        }
        //6.条件查询
        public static void queryWithParam(List<Map<String,Object>>param) throws Exception{
            
            Connection conn= DBUtil.getConn();
            //创建 sql 语句
            StringBuffer sql = new StringBuffer();
            sql.append("select * from Student where 1=1");
            for (Map<String, Object> map : param) {
                sql.append(" and "+map.get("key")
                +"="+map.get("value"));
            }
            
        //创建 预加载 的sql 语句执行对象
            PreparedStatement ptmt= conn.prepareStatement(sql.toString());
            
        ResultSet rs=ptmt.executeQuery();
        
        while(rs.next()){
            System.out.println("id:"+rs.getInt("id")+"	 	name:"
        +rs.getString("name")+"	age:"+rs.getInt("age"));
        }
        
            
        }
        
    }
    View Code

    (4)actich层,控制层

    package com.j1702.action;
    
    import com.j1702.dao.StudentDao;
    import com.j1702.model.Student;
    //这一层是我们的controller 层:他是view和model层的服务员
    public class StudentAction {
      //想数据库中插入一条数据
        public static void insert(Student stu) throws Exception{
            StudentDao.add( stu);
        }
        
        //根据传入的id 删除学生
        public static void delete(Integer id) throws Exception{
            StudentDao.delete(id);
        }
     //更新学生信息数据
        public static void update(Student stu) throws Exception{
            StudentDao.update(stu);
        }
        //查找Student
        public static void find(Integer id) throws Exception{
            StudentDao.queryWithId(id);
        }
    }
    View Code

     (5)view层:TestView.java 终端操作界面层

    package com.j1702.view;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Scanner;
    
    import  com.j1702.dao.*;
    import com.j1702.db.DBUtil;
    import com.j1702.model.Student;
    
    public class TestView {
        public static void main(String[] args) throws Exception{
        //编程以终端为view 层,实现数据的增、删、改
            /**
             * 请输入你要做的操作:A-添加,D-删除,U更新,F-查询,exit-退出
             * 
             * A 请输入插入的数据 name,age,address 
             * 
             */
            login();
            
        }
        
        public static void login(){
            System.out.println("请输入你要做的操作:A-添加,D-删除,U更新,F-查询,exit-退出");
            Scanner in= new Scanner (System.in);
            String xz=in.next();
              switch(xz){
              case "A" :
                  try {
                    add();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                 break;
              case "D":
                  try {
                    delete();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                  break;
              case "U":
                  try {
                    update();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                  break;
              case "F" :
                  find();
                  break;
              case "exit":
            exit();
            
              break;
              default :
                  System.out.println("没有你输入的选项,请重新选择");
                  login();
              
              }
             
        }
        public static void add() throws Exception{
            Student stu=new Student();
            
            System.out.println("请输入插入的数据 name:");
            Scanner cn=new Scanner (System.in);
            String name=cn.next();
            System.out.println("请输入插入的数据 age:");
            Scanner ca=new Scanner (System.in);
            int age=ca.nextInt();
            System.out.println("请输入插入的数据 address :");
            Scanner cd=new Scanner (System.in);
            String address = cd.next();
            
            stu.setName(name);
            stu.setAge(age);
            stu.setAddress(address);
            StudentDao l1 =new StudentDao();
            l1.add(stu);
            System.out.println("数据插入成功!");
            
            System.out.println("请选择:1 继续插入数据, 2.返回上一层");
            Scanner in= new Scanner (System.in);
            int  x2=in.nextInt();
            switch (x2) {
            case 1:
                add();
                break;
            case 2:
                login();
                break;
                default:
                    System.out.println("没有你要的选项,请重新输入!");
                    
                    
            
            }
            
        }
        public static void delete() throws Exception{
            Connection conn= DBUtil.getConn();
            System.out.println("请输入你要删除数据的ID");
            Scanner in=new Scanner (System.in);
            Integer xid=in.nextInt();
            StudentDao l2=new StudentDao();
            l2.delete(xid);
    System.out.println("数据删除成功!");
            
            System.out.println("请选择:1 继续继续数据, 2.返回上一层");
            Scanner in1= new Scanner (System.in);
            int  x2=in1.nextInt();
            switch (x2) {
            case 1:
                delete();
                break;
            case 2:
                login();
                break;
                default:
                    System.out.println("没有你要的选项,请重新输入!");
            
            }
        }
        public static void update() throws Exception{
            
               Student stu1=new Student();
               System.out.println("请输入修改的数据 ID:");
               Scanner ci=new Scanner (System.in);
                int id=ci.nextInt();
            
            System.out.println("请输入修改的数据 name:");
            Scanner cn1=new Scanner (System.in);
            String name=cn1.next();
            System.out.println("请输入修改的数据 age:");
            Scanner ca1=new Scanner (System.in);
            int age=ca1.nextInt();
            System.out.println("请输入修改的数据 address :");
            Scanner cd1=new Scanner (System.in);
            String address = cd1.next();
            stu1.setId(id);
            stu1.setName(name);
            stu1.setAge(age);
            stu1.setAddress(address);
            StudentDao l3=new StudentDao();
    l3.update(stu1);
            
            System.out.println("数据修改成功!");
            System.out.println("请选择:1 继续修改数据, 2.返回上一层");
            Scanner in1= new Scanner (System.in);
            int  x2=in1.nextInt();
            switch (x2) {
            case 1:
                update();
                break;
            case 2:
                login();
                break;
                default:
                    System.out.println("没有你要的选项,请重新输入!");
            
            }
        }
        public static void find(){
            System.out.println("请选择:1.查询所有 2.查询某个 3.条件查询");
            Scanner in= new Scanner (System.in);
            
            int  xz3=in.nextInt();
            switch(xz3){
            case 1:
                Student stu=new Student();
                StudentDao st=new StudentDao();
                try {
                    st.query(stu);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                cgf();
                break;
            case 2:
                System.out.println("请输入要查询的ID:");
                Scanner cid=new Scanner(System.in);
                Integer id1=cid.nextInt();
                
                try {
                    StudentDao st1=new StudentDao();
                    st1.queryWithId(id1);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
                cgf();
                
                break;
            case 3:
                tiaojian();
                break;
            }
    
            
        }
        public static void exit(){
            System.out.println("谢谢使用,再见!");
            return;
            
        }
        public static void cgf(){
    System.out.println("数据查询成功!");
            
            System.out.println("请选择:1 继续查询数据, 2.返回上一层");
            Scanner in3= new Scanner (System.in);
            int  x3=in3.nextInt();
            switch (x3) {
            case 1:
                find();
                break;
            case 2:
                login();
                break;
                default:
                    System.out.println("没有你要的选项,请重新输入!");
            
            }
        }
        public static void cgf1(){
            System.out.println("数据查询成功!");
                    
                    System.out.println("请选择:1 继续查询数据, 2.返回上一层");
                    Scanner in3= new Scanner (System.in);
                    int  x3=in3.nextInt();
                    switch (x3) {
                    case 1:
                        tiaojian();
                        break;
                    case 2:
                        login();
                        break;
                        default:
                            System.out.println("没有你要的选项,请重新输入!");
                    
                    }
                }
        
        public static void tiaojian(){
            System.out.println("请选择要查询的字段:1.id 查询 2.name 查询 3.age 查询 4.address 查询");
            Scanner tjcx=new Scanner(System.in);
            int tx3=tjcx.nextInt();
        switch(tx3){
        case 1:
            System.out.println("请输入要查询的ID:");
            Scanner cid=new Scanner(System.in);
            Integer id1=cid.nextInt();
            
            try {
                StudentDao st1=new StudentDao();
                st1.queryWithId(id1);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            cgf1();
            break;
        case 2:
            System.out.println("请输入你要查询的 name:");
            Scanner cn1=new Scanner(System.in);
            String sname1=cn1.next();
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("key", "name");
            map.put("value",sname1);
            List<Map<String,Object>> li= new ArrayList<Map<String,Object>>();
            li.add(map);
            try {
                StudentDao l4=new StudentDao();
                l4.queryWithParam1(li);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            cgf1();
            break;
        case 3:
            System.out.println("请输入你要查询的 age:");
            Scanner cn2=new Scanner(System.in);
            String sage=cn2.next();
            Map<String,Object> map1 = new HashMap<String,Object>();
            map1.put("key", "age");
            map1.put("value",sage);
            List<Map<String,Object>> li1= new ArrayList<Map<String,Object>>();
            li1.add(map1);
            try {
                StudentDao l4=new StudentDao();
                l4.queryWithParam2(li1);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            cgf1();
            break;
        case 4:
            System.out.println("请输入你要查询的 address:");
            Scanner cn3=new Scanner(System.in);
            String sadd=cn3.next();
            Map<String,Object> map2 = new HashMap<String,Object>();
            map2.put("key", "address");
            map2.put("value",sadd);
            List<Map<String,Object>> li2= new ArrayList<Map<String,Object>>();
            li2.add(map2);
            try {
                StudentDao l4=new StudentDao();
                l4.queryWithParam3(li2);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            cgf1();
            break;
            
        }
        
            
        }
    }
    View Code
  • 相关阅读:
    三、checkedListBoxControl
    三、安装MyCat-Web
    三、zookeeper安装
    二、.Net 连接mycat
    一、MyCat的搭建
    二、优惠卷
    二、Docker部署应用
    【2019-05-08】感知当下
    【一句日历】2019年7月
    【读书】2019
  • 原文地址:https://www.cnblogs.com/sbj-dawn/p/7111990.html
Copyright © 2011-2022 走看看