JAVA-JDBC基础(Mysql版本)

前言:

官方定义:

JDBC 规范定义接口,具体的实现由各大数据库厂商来实现。 JDBC 是 Java 访问数据库的标准规范,真正怎么操作数据库还需要具体的实现类,也就是数据库驱动。每个 数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动。所以我们只需要会调用 JDBC 接口中的方法即 可,数据库驱动由数据库厂商提供。

个人理解:

  可以理解为,java公司制定了一个操作关系型数据库的统一规范。要想让你的关系型数据库被java语言使用,就得按照这个标准去写具体的实现类。也就是在使用之前我们需要把具体数据库厂商的驱动jar包导入到项目里,jar包里就是具体实现类。下面会以Mysql为例来操作,如何导入jar包和如何使用jdbc的公共接口去获取到具体的数据库连接对象。然后通过具体的数据库连接对象,获取SQL执行对象。最后调用SQL执行对象,来执行具体的SQL语句。

目录

依赖说明:

Jar包

JDBC 的核心 API

JDBC操作步骤:

JDBC登录实例演示:

main方法代码

配置文件: 

工具类: 

Login方法代码

演示结果:


依赖说明:

Jar包

JDBC 的核心 API

JDBC操作步骤:

1.导入驱动jar包

1.0新建目录

 

1.1复制到自己新建的项目目录

 


1.2 使用 ADD AS Lirary(添加到项目中)

 

2.注册驱动

手动加载

 Class.forName("com.mysql.jdbc.Driver");//手动把mysql实现类加载进内存,不需要返回值。

3.使用DriverManager类的getConnection方法获取连接对象

参数:

URL地址格式:

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");

4.定义SQL语句

4.1 PreparedStatement对象方式定义SQL语句

 //定义SQL语句(使用?号做位占位符)
            String sql="select * from user where username=? and password= ?";

4.2 Statement 对象方式定义SQL语句

String sql="select * from user where username=-'"+username+"' and password='"+password+"'";

5.获取SQL语句执行对象(Statement SQL语句拼接方式的SQL执行对象 或者 PreparedStatement 参数化的SQL执行对象)

5.1Statement

Statement statement = connection.createStatement();

5.2PreparedStatement(和Statement的区别是在创建的时候就需要把SQL语句传进去,之后调用具体的方法就不需要SQL语句了。但是需要对参数进行赋值)

 PreparedStatement prepareStatement(String sql)

6.执行SQL语句(ResultSet resultSet =null; 获取结果集对象)

6.1Statement执行SQL语句并获取结果

 resultSet = statement.executeQuery(sql);

6.2PreparedStatement执行SQL语句并获取结果

 statement = connection.prepareStatement(sql);
            //6.2.1添加参数
                statement.setString(1,username);
                statement.setString(2,password);
 resultSet= statement.executeQuery();

7.处理结果

if(resultSet.next()){
                String username1 = resultSet.getString("username");
                System.out.println("姓名"+"----"+username1);
                result=true;
            }

8.释放资源

if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

JDBC登录实例演示:

main方法代码

 //1.键盘输入,用户名,密码
        Scanner sr= new Scanner(System.in);
        //输入用户名
        System.out.println("请输入用户名:");
        String username=sr.next();
        //输入密码
        System.out.println("请输入密码:");
        String password=sr.next();
        //2.调用方法
        boolean zhangsan = new JDBCLogin().login2(username, password);
        if(zhangsan){
            System.out.println("登录成功!");
           // break;//登录成功跳出循环
        }else {
            System.out.println("登录失败!");
        }

配置文件: 

url=jdbc:mysql:///login
user=root
password=root
driver=com.mysql.jdbc.Driver

工具类: 

package cn.itcast.util;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

/**
 * @program: JavaWeb
 * @description: jdbc助手类
 * @author: 康世行
 * @create: 2021-01-05 20:00
 */
public class JDBCUtils {

    private static String url;
    private static String user;
    private static String password;
    private static String driver;

 /**
 *@Description: 文件读取,读取配置文件
 *@Param: 
 *@return: 
 *@Author: 康世行
 *@date: 2021/1/5
 */ 
static {

     try {
         //读取资源文件的值
         //1.创建Properties集合类,读取配置文件
         Properties pro=new Properties();
         //获取src路径下的文件的路径---》classLoader
         Class<JDBCUtils> jdbcUtilsClass = JDBCUtils.class;
         ClassLoader classLoader = jdbcUtilsClass.getClassLoader();//通过类对象获取类加载器
         //类加载器可以获取到src下的文件路径
         URL resource = classLoader.getResource("jdbc.properties");
         //通过resourec的getpath获取文件路径
         String path = resource.getPath();
         //2.加载配置文件
         pro.load(new FileReader(path));
         //3.获取数据,赋值
        url=pro.getProperty("url");
        user=pro.getProperty("user");
        password=pro.getProperty("password");
        driver=pro.getProperty("driver");
        //4.注册驱动
         Class.forName(driver);
     } catch (IOException e) {
         e.printStackTrace();
     } catch (ClassNotFoundException e) {
         e.printStackTrace();
     }
 }

    /**
    *@Description: 获取连接对象
    *@Param: 无
    *@return: 返还连接对象
    *@Author: 康世行
    *@date: 2021/1/5
    */
    public static Connection getConnection(){
        Connection conn=null;
        try {
             conn= DriverManager.getConnection(url,user,password);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return conn;
    }
    /**
    *@Description: 释放资源
    *@Param: 执行SQL语句对象,连接对象
    *@return: 无
    *@Author: 康世行
    *@date: 2021/1/5
    */
    public static void  close(Statement stmt,Connection conn){
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
    /**
     *@Description: 释放资源
     *@Param: 执行SQL语句对象,连接对象,数据集
     *@return: 无
     *@Author: 康世行
     *@date: 2021/1/5
     */
    public static void  close(Statement stmt, Connection conn, ResultSet rs){
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

Login方法代码

   /**
     *@Description: 登录方法(使用PreparedStatement实现)
     *@Param: 用户名,密码
     *@return: 是否登录成功
     *@Author: 康世行
     *@date: 2021/1/6
     */
    public boolean login2(String username,String password){
        boolean result=false;
        //判断用户名和密码是否为空
        if(username==null||password==null){
            result=false;
        }
        Connection connection=null;
        PreparedStatement statement =null;
        ResultSet resultSet =null;
        try {
            //1.获取数据库连接
            connection = JDBCUtils.getConnection();
            //2.定义SQL语句(使用?号做位占位符)
            String sql="select * from user where username=? and password= ?";
            //3.获取执行SQL的对象
              statement = connection.prepareStatement(sql);
            //3.1添加参数
                statement.setString(1,username);
                statement.setString(2,password);
            //4.执行SQL获取结果
             resultSet= statement.executeQuery();
            //5.处理结果
            if(resultSet.next()){
                String username1 = resultSet.getString("username");
                System.out.println("姓名"+"----"+username1);
                result=true;
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //释放资源
            JDBCUtils.close(statement,connection,resultSet);
        }
        return result;
    }

演示结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康世行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值