Javaweb-jdbc连接数据库

一, 无封装版

1,引入mysql-connector 驱动。
2,加载mysql驱动程序,有两种方式。

DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());

这第一种方式会加载两次驱动,所以基本不用,常用下面第二种。

Class.forName(“com.mysql.cj.jdbc.Driver”);

3,通过DriverManager 对象拿到 Connection 数据库连接对象。拿到连接对象才能和数据库打交道
4,通过连接对象,获得推送sql 语句的Statement对象。这里为了安全和使用的方便,JDBC也提供了PreparedStatement 预编译描述对象。关于两者区别:

  • Statement,只提供了三种方法推送sql
    在这里插入图片描述
  • PreparedStatement ,可以使用占位符,更加安全和方便。
    在这里插入图片描述

5,推送SQL语句
6,关闭

 try{
       //1,加载
       Class.forName("com.mysql.jdbc.Driver");
        //如果使用的mysql8, 需要使用下面这个驱动
        //Class.forName("com.mysql.cj.jdbc.Driver");
       String url = "jdbc:mysql://localhost:3306/sch_1299999?serverTimezone=UTC";
       String username= "root";
       String pass = "root";
       
       //2,通过DriverManager 对象拿到 Connection 连接对象。
       Connection con = DriverManager.getConnection(url,username,pass);
       if(con != null){
           out.println("数据库连接成功");
       }else {
           out.println("数据库连接失败");
       }
       String sql = "select * from message where number = ?";

       //3,通过连接对象,获得推送sql 语句的Statement对象。
       PreparedStatement preparedStatement = con.prepareStatement(sql);
       preparedStatement.setString(1,number);

       //4,推送SQL语句
       ResultSet resultSet = preparedStatement.executeQuery();
       ArrayList<message> list = new ArrayList<>();
       while (resultSet.next()){
           message muser = new message();
           muser.setNumber(resultSet.getString("number"));
           muser.setName(resultSet.getString("name"));
           muser.setBirthday(resultSet.getString("birthday"));
           muser.setEmail(resultSet.getString("email"));
           list.add(muser);
       }


       //5,关闭
       resultSet.close();
       preparedStatement.close();
       con.close();
   }catch (Exception e){
        e.printStackTrace();
   }

二,封装util

装载部分,推送查询部分,由使用者自定义。
只封装注册,连接,关闭部分。

package util;

import java.sql.*;

public class JdbcUtil {
    private static String username = "root";
    private static String password = "root";
    private static String url =
            "jdbc:mysql://localhost:3306/sch_1299999?serverTimezone=UTC";

    static {
        //加载jdbc驱动,即注册部分。
        try {
            Class.forName("com.mysql.jdbc.Driver");
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 获得连接对象,连接部分
     * @return
     */
    public static Connection getConnection(){
        Connection con = null;
        try{
            con = DriverManager.getConnection(url,username,password);
        }catch (Exception e){
            e.printStackTrace();
        }
        return con;
    }

    /**
     *关闭部分
     * @param stmt
     * @param conn
     */
    public static void release(Statement stmt, Connection conn){
        if(stmt != null){
            try {
                stmt.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        if(conn != null){
            try {
                conn.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    public static void release(ResultSet rs, Statement stmt, Connection conn){
        if(rs != null){
            try {
                rs.close();

            }catch (Exception e){
                e.printStackTrace();
            }
        }
        release(stmt, conn);
    }

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值