实习DAY2

JDBC的简介

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。——百度百科

在IDEA中导入JDBC的jar包

首先创建一个本地的web app项目:
在这里插入图片描述
把JDBC的jar包粘贴到项目路径 “你的项目名/web/WEB-INF/lib” 下:
在这里插入图片描述
右键改jar包,选择Add as Library…
在这里插入图片描述
之后就可以开始用这个api来连接数据库了。

项目中连接数据库

获取驱动

在src文件夹下创建新的package,名com.zhongruan。再创建一个class来使用jdbc。
在这里插入图片描述
这里我给该类命名为TestU,开始连接数据库的第一步:获取驱动。

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

建立数据库的连接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/java7?useSSL=true&characterEncoding=utf-8" + "&user=root&password=root");

这里的&user和&password后跟的分别是数据库mysql的用户名和密码。

编写sql语句

这里用最常用的添加行的sql语句。

String sql = "insert into tb_user(username,password) values(?,?)";

因我用到的表的结构如下,且主键id是自增的,所以添加行只需要填进username和password的值。
在这里插入图片描述

定义一个存放sql的对象PreparedStatement

PreparedStatement pstm = conn.prepareStatement(sql);

注意这里前面是PreparedStatement后面是prepareStatement

填坑

前面的sql语句中的?字符便是在这里决定它的值。
在这里插入图片描述

执行sql语句

int i = pstm.executeUpdate();
if(i > 0){
	System.out.print("增加成功");
} else{
	System.out.print("增加失败");
}

代码优化

前面的代码中把连接数据库,输出结果等等功能都放在一个类里,这种代码不利于我们去读或维护,所以用更合理的方式去划分代码。

静态类实现数据库连接的封装

新建一个命名为DBUtil的工具类,里面的方法和变量都是静态的。

public class DBUtil {
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/java7?useSSL=true&characterEncoding=utf-8";
    private static String user = "root";
    private static String password = "123456";

    // 1. 获取驱动
    static {
        try {
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 2. 创建连接
    public static Connection get_Conn() throws SQLException {
        Connection conn = DriverManager.getConnection(url, user, password);
        System.out.println("数据库连接成功" + conn);
        return conn;
    }

    // 3. 关闭连接
    public static void get_CloseConn(ResultSet rs, PreparedStatement pstm, Connection conn) throws SQLException {
        if(rs !=null){
            rs.close();
        }

        if(pstm !=null){
            pstm.close();
        }

        if(conn !=null){
            conn.close();
        }
    }
}

调用数据库连接工具类

在另一个类中,可以用工具类名.方法名的形式来调用该方法。这里用该方法实现添加功能。

    public void addUser(User user){

        try {
            // 1. 获取连接
            conn = DBUtil.get_Conn();
            // 2. 获取存放sql语句的对象
            pstm = conn.prepareStatement("insert into tb_user(username, password) values(?,?) ");
            // 3. 填坑
            pstm.setString(1,user.getUsername());
            pstm.setString(2,user.getPassword());
            // 4. 执行sql并得到结果
            int i = pstm.executeUpdate();
            // 5. 处理结果
            if(i > 0 ){
                System.out.println("增加成功");
            }else {
                System.out.println("增加失败");
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 6. 关闭连接
            try {
                DBUtil.get_CloseConn(null, pstm, conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值