JDBC详细学习

一、介绍

1.定义

        JDBC全称为java database connectovity,是sun公司制定的一个接口。在java.sql.*包下,该包中定义了一系列访问数据库和接口的类。JDBC有一套执行SQL语句的API,应用程序可以通过这套API关联到关系型数据库,并执行SQL语句。

 

二、JDBC的使用

1.安装使用

我使用的是IDEA,然后运行程序,还需要数据库的驱动包,我这里使用的mysql数据库,所以我下载的mysql的驱动包,下载官网链接在这       mysql官网

然后下载进行解压,添加mysql数据驱动,鼠标点右击src->Open Module Setting, libraries-> +

--->Java, 找到刚才解压的数据库驱动,进行添加(一般数据库的驱动时放在自己创的lib文件夹中,进行分类)

 添加完成以后

 

三、代码实现与结果

数据库结构为:

 创建表单,你就可以加如些数据,然后进行连接,进行实现

重点在这:

conn= DriverManager.getConnection(url,username,password);
            stmt=conn.createStatement();
            rs=stmt.executeQuery(sql);
package ATraining.day1_JDBC;
import java.sql.*;
public class test1 {
    public static void main(String[] args) throws SQLException {
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        try{
//            加载数据库驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
//            通过DriverMananger获取数据库连接
            String url="jdbc:mysql://127.0.0.1:3306/test";
            String username="root";
            String password="3491342";
            conn= DriverManager.getConnection(url,username,password);
//            通过Connection对象获取Statement对象
            stmt=conn.createStatement();
//            使用Statement执行SQL语句
            String sql="select *from tel";
            rs=stmt.executeQuery(sql);
//            操作ResultSet结果集
            System.out.println("    id      |   name    |   contact     ");
            while (rs.next()){
//               通过列名获取指定指定字段的值
                int id=rs.getInt("id");
//                String id=rs.getString("id");
                String name=rs.getString("name");
                String contact=rs.getString("contact");
                System.out.println(id+"     "+name+"        "+contact);
            }


        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(rs!=null) rs.close();
            if(stmt!=null) stmt.close();
            if(conn!=null) conn.close();
        }
    }
}

四、总结

1.面试要点

HR:jdbc的执行步骤?

JDBC执行的六个步骤

注册驱动

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

获取连接

Connection com =

DriverManager.getConnection("jdbc:mysql://10.16.158.90:3306/db1", "root", "123456");

获取连接的执行者

Statement stat = com.createStatement();

执行sql语句,并接收结果集

Statement stat = com.createStatement();  ResultSet rs = stat.executeQuery(sql);

处理结果

rs.getString("name")

释放资源

com.close() statement Connection
 

2.对JDBC进行封装

哪些可以封装?

1.先把公共的部门进行封装 - 减少重复代码 -提高代码的重用性

2.把可变部分作为动态参数传递 -提高代码的灵活性

封装类 JDBCUtil.java

public class JDBCUtil {

    public static Connection connection = null;
    public static PreparedStatement preparedStatement = null;
    public static ResultSet resultSet = null;
    public static boolean flag = false;         //判定是查询方法还是更新操作,方便进行关闭ResultSet(update是不需要使用Result的)

    //获取连接
    public static Connection getConnection() throws SQLException, ClassNotFoundException {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

//        TODO      数据库url,用户名,用户密码
        String url = "jdbc:mysql://localhost:3306/javaweb?serverTimezone=Asia/Shanghai&useSSL=false";
        String user = "root";
        String password = "349134207";

        //2.获取数据库连接对象
        connection = DriverManager.getConnection(url, user, password);
        return connection;
    }

    //关闭资源
    public static void close() {
        try {
            if (flag) {
                resultSet.close();
            }
            preparedStatement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

//    TODO       修改,增加,删除
    public static Integer update(String sql,Object[] params) throws SQLException, ClassNotFoundException {
        connection = getConnection();
        try {
            preparedStatement = connection.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                preparedStatement.setObject(i + 1, params[i]);
            }
            //返回操作成功条数
            int i = preparedStatement.executeUpdate();
            return i;
        }catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }


//    TODO       查询
    public static ResultSet select(String sql, Object[] params) throws SQLException, ClassNotFoundException {
        flag = true;
        connection = getConnection();
        try {
            preparedStatement = connection.prepareStatement(sql);
            //预编译处理
            for (int i = 0; i < params.length; i++) {
                preparedStatement.setObject(i + 1, params[i]);
            }
            //返回结果集
            resultSet = preparedStatement.executeQuery();
            return resultSet;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }



//    TODO       查询
    public static ResultSet select(String sql) throws SQLException, ClassNotFoundException {
        flag = true;
        connection = getConnection();
        try {
            preparedStatement = connection.prepareStatement(sql);
            //返回结果集
            resultSet = preparedStatement.executeQuery();
            return resultSet;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值