资讯详情

Java连接数据库-jbdc

Java连接数据库-jbdc

目录

  • Java连接数据库-jbdc
    • 什么是jbdc
      • 基本概念
      • 操作步骤
      • jdbc 下载地址
        • jdbc 使用步骤
      • 操作示例
      • 实战编码
    • jdbc 操做详解
      • 相关对象
      • 注册驱动
      • 获取连接对象
      • 常用的连接对象的方法
      • 执行对象的相关方法
      • 演练
      • 使用查询结果集对象
        • 读取一行数据
        • 读取所有行的数据
      • 演练 查
      • 事务操作
    • jbdc 工具类
      • 分布代码
      • 演练
      • 工具类编写
        • 阶段一
          • 方式一
          • 方式二
            • 利用properties集合存数据
            • 利用properties集合读数据
        • 静态方法块
        • 阶段二
      • 安全执行者
        • 安全问题 sql 注入
        • prepareStatement
          • 模型
    • 数据为连接池
      • 模型
      • 概念
      • DataSource 连接
        • 具体操作
        • 实际演练
      • Druid 数据库连接池技术
        • 实际操作
    • JDBC Template
      • JDBC Template入门
        • 增删改
        • 查操作
          • 单个数据
          • 多个数据
    • 关于Java bean
      • JDBC 使用 Java Bean
      • 查询,总录数
      • 小结
        • 定义映射对象
        • 利用系统提供的自动映射对象

什么是jbdc

基本概念

在这里插入图片描述

关系图

操作步骤

jdbc 下载地址

jdbc驱动下载

bsq2

jdbc 使用步骤

获取连接器

新建一个项目lib目录

设置lib 目录为库目录

让开放环境知道去哪里找相关文件 选中lib 右键目录,选择 Add as Libary

注册驱动

获取连接对象

定义sql 语句和获取执行者

操作示例

实战编码



import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Test { 
        
    public static void main(String[] args) throws ClassNotFoundException, SQLException { 
        
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/hpschool";
        Connection connection = DriverManager.getConnection(url, "root", "root");
        Statement statement = connection.createStatement();
        String sql = "INSERT INTO teacher VALUES(NULL,\"赵云\",\"龙胆\",\"2011-1-3\")";
        int i = statement.executeUpdate(sql);
        System.out.println(i);
    }
}

jdbc 操做详解

相关对象

注册驱动

获得连接对象

连接对象的常用方法

执行者对象的相关方法

演练

查询结果集对象的使用

读取一行数据

读取所有行的数据

演练 查

import java.sql.*;

public class Test02 { 
        
    public static void main(String[] args) throws ClassNotFoundException, SQLException { 
        
        // 注册驱动
        Class.forName("com.mysql.jdbc.Driver");

        // 获得连接对象
        String connStr = "jdbc:mysql://localhost:3306/db11070326";
        String user = "root";
        String pass = "root123";
        Connection conn = DriverManager.getConnection(connStr, user, pass);

        // 获取执行者
        Statement stmt = conn.createStatement();

        // 新建sql 语句
        String sql = "SELECT * FROM teacher;";

        ResultSet rs = stmt.executeQuery(sql);

        // 让指针往下走
        while(rs.next()){ 
        

            int id = rs.getInt("id");
            String name = rs.getString("name");
            String phone = rs.getString("phone");
            String skill = rs.getString("skill");

            String res = String.format("编号:%s,姓名:%s,电话:%s,专业:%s",id,name,phone,skill);
            System.out.println(res);

        }

        // 关闭资源
        rs.close();
        stmt.close();
        conn.close();
    }
}


事务操作

jbdc 工具类

分布代码

演练

工具类编写

阶段一

方式一
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCUtils { 
        
    public static Connection getConnection() { 
        
        // 定义返回值
        Connection conn = null;

        try { 
        
            // 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 准备数据,连接字符串,用户名,密码
            String connStr = "jdbc:mysql://localhost:3306/db11070326";
            String user = "root";
            String pass = "root123";
            // 获取连接对象
            conn = DriverManager.getConnection(connStr, user, pass);

        } catch (ClassNotFoundException | SQLException e) { 
        
            e.printStackTrace();
        }

        // 返回连接对象
        return conn;
    }


}

方式二
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCUtils { 
        
    public static Connection getConnection() throws IOException { 
        
        // 获取双列集合
        Properties properties = new Properties();

        // 获得字符数据流对象
        FileReader fileReader = new FileReader("setting.properties");
        properties.load(fileReader);
        String connStr = properties.getProperty("url");
        String user = properties.getProperty("user");
        String pass = properties.getProperty("pass");
        
        // 关闭字符输入流对象
        fileReader.close();

        // 定义返回值
        Connection conn = null;

        try { 
        
            // 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 准备数据,连接字符串,用户名,密码
            
            // 获取连接对象
            conn = DriverManager.getConnection(connStr, user, pass);

        } catch (ClassNotFoundException | SQLException e) { 
        
            e.printStackTrace();
        }

        // 返回连接对象
        return conn;
    }


}

利用properties集合存数据
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

public class pro集合 { 
        
    public static void main(String[] args) throws IOException { 
        
        Properties properties = new Properties();

        // 存值
        properties.setProperty("user","root");
        properties.setProperty("pass","root123");
        properties.setProperty("url","jdbc:mysql://localhost:3306/db11070326");

        // 定义个字符流
        FileWriter fileWriter = new FileWriter("setting.properties");

        //
        properties.store(fileWriter,null);
			properties. close();
    }
}

利用properties集合读数据
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class pro读数据 { 
        
    public static void main(String[] args) throws IOException { 
        
        // 实例化一个双列集合
        Properties properties = new Properties();

        // 字符输入流
        FileReader fileReader = new FileReader("setting.properties");

        // 加载数据
        properties.load(fileReader);

        String user = properties.getProperty("user");
        String pass = properties.getProperty("pass");
        String url = properties.getProperty("url");

        System.out.println(user+pass+url);

        fileReader.close();
    }
}

静态方法块

阶段二

快捷键:Ctrl + Ait +T

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCUtils { 
        

    // 获取双列集合
    private static Properties properties = new Properties();

    static { 
        

        try { 
        
            // 获得字符数据流对象
            FileReader fileReader = new FileReader("setting.properties");
            properties.load(fileReader);

            // 关闭字符输入流对象
            fileReader.close();
        } catch (IOException e) { 
        
            e.printStackTrace();
        }
    }

    public static Connection getConnection()  { 
        


        // 定义返回值
        Connection conn = null;

        try { 
        
            // 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 准备数据,连接字符串,用户名,密码
            String connStr = properties.getProperty("url");
            String user = properties.getProperty("user");
            String pass = properties.getProperty("pass");
            // 获取连接对象
            conn = DriverManager.getConnection(connStr, user, pass);

        } catch (ClassNotFoundException | SQLException e) { 
        
            e.printStackTrace();
        }

        // 返回连接对象
        return conn;
    }


}

配置文件

#Thu Apr 07 16:14:58 CST 2022
pass=root123
user=root
url=jdbc\:mysql\://localhost\:3306/db11070326

安全执行者

安全问题 sql 注入

prepareStatement

模型

会出安全问题的代码

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class TestLogin { 
        
    public static void main(String[] args) throws SQLException { 
        
        // 扫描仪
        Scanner scanner = new Scanner(System.in);

        boolean isLosing = false;

        // 欢迎语句
        System.out.println("欢迎你");
        System.out.println("请输入用户名:");
        String user = scanner.next();
        System.out.println("请输入密码:");
        String pass = scanner.next();

        // 拿数据去查
        // 使用JDBC去查
        Connection conn = JDBCUtils.getConnection();

        // 获取执行者
        Statement stmt = conn.createStatement();
        String sql = String.format("SELECT * FROM `user` WHERE uname = '%s' AND pwd = '%s';", user, pass);
        ResultSet rs = stmt.executeQuery(sql);

        // 这里只做判断
        if (rs.next()) { 
        
            System.out.println("登录成功");
            isLosing = true;
        } else { 
        
            System.out.println("登录失败");
        }

        // 关闭资源
        JDBCUtils.close(conn, stmt, rs);

        Connection conn2 = JDBCUtils.getConnection();
        Statement stmt2 = conn2.createStatement();
        // 登录成功获取是失败
        if (isLosing){ 
        

            // 登录成功要做的事情
            sql = "SELECT s.name AS sname,s.gender,t.name AS tname,t.skill FROM student AS s INNER JOIN teacher AS t ON s.tid = t.id;";
            ResultSet rs2 = stmt2.executeQuery(sql);
            // 遍历
            while (rs2.next()){ 
        
                String sname = rs2.getString("sname");
                String gender = rs2.getString("gender");
                String tname = rs2.getString("tname");
                String skill = rs2.getString("skill");

                // 打印数据
                String con = String.format("姓名:%s,性别:%s,老师:%s,老师技能:%s",sname,gender,tname,skill);
                System.out.println(con);
            }
            // 关闭资源
            JDBCUtils.close(conn2, stmt2, rs2);
        }else { 
        
            // 登录失败要做的事情
            System.out.println("获取失败");
        }





    }
}

修改后的代码

import java.sql.*;
import java.util.Scanner;

public class TestLogin { 
        
    public static void main(String[] args) throws SQLException { 
        
        // 扫描仪
        Scanner scanner = new Scanner(System.in);

        boolean isLosing = false;

        // 欢迎语句
        System.out.println("欢迎你");
        System.out.println("请输入用户名:");
        String user = scanner.next();
        System.out.println("请输入密码:");
        String pass  

标签: bsq073lvdt位移变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台