JDBC两种写法

一、jdbc连接套路

1.jdbc代码:

1.获取连接
2.编写sql
3.创建PreparedStatement
4.如果sql语句中有?给?赋值
5.执行sql
6.如果是查询,解析ResultSet
7.关闭资源

2.核心api

  1. DriverManager

其实我们今后只需要会用DriverManager的getConnection()方法即可

  1. Connection

Connection最为重要的方法就是获取Statement:
Statement stmt = con.createStatement();

  1. Statement

Statement最为重要的方法是:

①. int executeUpdate(String sql):执行更新操作,即执行insert、update、delete语句,其实这个方法也可以执行create table、alter table,以及drop table等语句,但我们很少会使用JDBC来执行这些语句;

②. ResultSet executeQuery(String sql):执行查询select操作,执行查询操作会返回ResultSet,即结果集。

③. boolean execute() 了解!可以执行executeUpdate()和executeQuery()两个方法能执行的sql语句,这个方法可以用来执行增、删、改、查所有SQL语句。该方法返回的是boolean类型,表示SQL语句是否有结果集!。如果使用execute()方法执行的是更新语句,那么还要调用int getUpdateCount()来获取insert、update、delete语句所影响的行数。如果使用execute()方法执行的是查询语句,那么还要调用ResultSet getResultSet()来获取select语句的查询结果。

  1. ResultSet

ResultSet表示结果集,它是一个二维的表格!ResultSet内部维护一个行光标(游标),ResultSet提供了一系列的方法来移动游标

3.解析图

在这里插入图片描述

二不采用封装式

在这里插入图片描述

   public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //加载驱动
        Class.forName("com.mysql.jdbc.Driver");  //固定写法 加载驱动
        //用户信息和URL
        //localhost:mysql默认端口号3306 我是由于改了mysql的端口号
        String url="jdbc:mysql://localhost:3307/user?useUnicode=true&characterEncoding=utf8&useSSL=true";
        String username="root";
        String password="0000";//数据库密码
        //连接成功,数据库对象  Connection代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);
        //执行SQL的对象 statement执行SQL的对象
        Statement statement=connection.createStatement();
        //执行SQL的对象去执行SQL,可能存在返回结果,查看返回结果
        String sql="SELECT * FROM tb_users";
        String sql2="INSERT INTO tb_users(sname,pwd)  VALUES('zhangsan','123')";
        int i = statement.executeUpdate(sql2);
        System.out.println("受影响行数"+i);
        ResultSet resultSet = statement.executeQuery(sql);  // 返回的结果集
        while(resultSet.next()){
            //字段要和数据库的字段一致
            System.out.println("id="+resultSet.getObject("id"));
            System.out.println("sname="+resultSet.getObject("sname"));
            System.out.println("pwd="+resultSet.getObject("pwd"));
            System.out.println("=====================================");
        }

        //释放连接
        resultSet.close();
        statement.close();
        connection.close();

    }

但是实际开发中一把会把数据库四大参数与close connection进行封装

三、封装jdbc

数据库放入.properties文件中,放入src目录下
在这里插入图片描述

#msql四大参数
#驱动类的全限定名
driverClassName=com.mysql.jdbc.Driver
#url
url=jdbc:mysql://localhost:3307/user?useUnicode=true&characterEncoding=utf8&useSSL=false
#用户名
username=root
#密码
password=0000

使用dao层模式
在这里插入图片描述

实体类: User                                      Student            ---> pojo包

DAO接口: UserDao                          StudentDao     --> dao包

Dao接口的实现类:UserDaoImpl      StudentDaoImpl   --> dao.impl包

工具类: 位于util包

工具类实现代码块

package util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * Created with IntelliJ IDEA.
 * User: 张乾
 * Date: 2022/7/13
 * Time: 17:11
 * Description: jdbc连接数据库
 */
public class JdbcUtil {
    //用于properties文档的读入
    private static Properties props=new Properties();
    static{
        //输入流读取文件
        //getClassLoader() 得到当前类型的类加载器
        //getResourceAsStream()加载文件
        InputStream in =JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");
        try {
            //得到文件中的键值对
            props.load(in);
            //注册驱动类
            Class.forName(props.getProperty("driverClassName"));
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //得到connection对象
    public static Connection getConnertin() throws SQLException {
        //getProperty ( String key )
        //获取属性信息
        //即用指定的键在属性列表中搜索属性 也就是通过参数 key 得到 key 所对应的 value
        return DriverManager.getConnection(props.getProperty("url"),props.getProperty("username"),props.getProperty("password"));
    }

    /**
     * 关闭资源
     * @param resultSet
     * @param pstmt
     * @param coon
     */
    public static void close(ResultSet resultSet, PreparedStatement pstmt, Connection coon){
        try {
            if (resultSet != null){
                resultSet.close();
            }
            if (pstmt != null){
                pstmt.close();
            }
            if (coon != null){
                coon.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

在dao接口类的实现类中进行以java代码操作数据库

ublic class UserDaoImpl implements UserDao {

    /**
     * 注册
     * @param user
     * @return
     */
    @Override
    public Boolean add(User user) {
        Connection connection=null;
        PreparedStatement pstm = null;
        ResultSet rs =null;
        //连接
        try{
        //1.获取连接
            connection= JdbcUtil.getConnertin();
            //2.编写sql语句
            String sql="INSERT INTO tb_users(sname,pwd)  VALUES(?,?)";
            //3.创建PrepareStatement
            pstm=connection.prepareStatement(sql);
            //4.由于有问号则给问号赋值
            pstm.setString(1,user.getName());
            pstm.setString(2,user.getPwd());
            //5执行sql 返回受影响行数(由于是对数据库进行更新则没有使用的resultset结果集)
            int i = pstm.executeUpdate();
            if (i!=0) return true;
        }catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtil.close(rs,pstm,connection);
        }
        return false;
    }
}

总结

jdbc就是一个简单的套路,类比上面的商品图知道核心api的关键作用,记住套路模板则可以完成jdbc快速书写

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值