JDBC的基本模板

文章详细介绍了JDBC的概念、作用和本质,以及如何导入MySQL驱动jar包。接着展示了使用JDBC进行增删改查的基本模板,强调了使用PreparedStatement而非Statement的原因,包括性能提升和防止SQL注入。
摘要由CSDN通过智能技术生成

一、JDBC

 1.JDBC概念

JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的。 

2.JDBC作用

可以通过java代码操作数据库。

3.JDBC本质

是java官方提供的一套规范(接口),用于帮助开发人员快速实现不同关系型数据库的连接。

二、导入MySQL驱动jar包

1.导入jar包

方法一:从官网下载对应版本的压缩包驱动包下载

解压打开找到

将该JAR文件复制,并在IDEA项目下新建一个lib目录,将JAR文件粘贴至该目录下

然后再右键lib,选择add as library,即可完成导入。

方法二:在pom.xml导入mysql驱动包

    <dependencies>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.0.32</version>
        </dependency>
    </dependencies>

刷新maven即可完成 

三、JDBC中增删改查的基本模板

原始表数据,数据库名jdbc_db,表名information

注:以下代码增删改查实际只有SQL语句和执行SQL语句不同

1.查询操作

只有查询数据调用executeQuery()方法,其余增删改都调用executeUpdate()方法

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        String url = "jdbc:mysql://localhost:3306/jdbc_db";//连接的数据库
        String username = "root";//用户名
        String password = "1234";//用户名密码
        Connection conn = DriverManager.getConnection(url,username,password);

        String userID = "0001";
        //3.定义SQL语句
        String sql = "select * from information where ID = ?";

        //4.获取PreparedStatement对象
        PreparedStatement prep = conn.prepareStatement(sql);

        //5.将值传入占位符“?”
        prep.setString(1,userID);

        //6.执行SQL
        ResultSet rs = prep.executeQuery();
        //打印是否查询成功
        System.out.println(rs.next());
        //输出查询到的Uname值
        System.out.println(rs.getString("Uname"));

        //7.释放资源
        rs.close();
        prep.close();
        conn.close();
    }
}

控制台输出 

2.增加操作

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        String url = "jdbc:mysql://localhost:3306/jdbc_db";//连接的数据库
        String username = "root";//用户名
        String password = "1234";//用户名密码
        Connection conn = DriverManager.getConnection(url, username, password);

        String userID = "0004";
        String Uname = "王四";
        //3.定义SQL语句
        String sql = "insert into information(ID,Uname) values (?,?)";

        //4.获取PreparedStatement对象
        PreparedStatement prep = conn.prepareStatement(sql);

        //5.将值传入占位符“?”
        prep.setString(1, userID);
        prep.setString(2, Uname);

        //6.执行SQL
        int rs = prep.executeUpdate();

        System.out.println(rs);
        //7.释放资源
        prep.close();
        conn.close();
    }
}

控制台输出

表变化

3.删除操作

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        String url = "jdbc:mysql://localhost:3306/jdbc_db";//连接的数据库
        String username = "root";//用户名
        String password = "1234";//用户名密码
        Connection conn = DriverManager.getConnection(url,username,password);

        String userID = "0001";
        //3.定义SQL语句
        String sql = "delete from information where ID = ?";

        //4.获取PreparedStatement对象
        PreparedStatement prep = conn.prepareStatement(sql);

        //5.将值传入占位符“?”
        prep.setString(1,userID);

        //6.执行SQL
        int rs = prep.executeUpdate();

        System.out.println(rs);
        //7.释放资源
        prep.close();
        conn.close();
    }
}

控制台输出 

 表变化

 

 4.更新操作

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        String url = "jdbc:mysql://localhost:3306/jdbc_db";//连接的数据库
        String username = "root";//用户名
        String password = "1234";//用户名密码
        Connection conn = DriverManager.getConnection(url, username, password);

        String userID = "0002";
        String Uname = "王大";
        //3.定义SQL语句
        String sql = "update information set Uname = ? where ID = ?";

        //4.获取PreparedStatement对象
        PreparedStatement prep = conn.prepareStatement(sql);

        //5.将值传入占位符“?”
        prep.setString(1, Uname);
        prep.setString(2, userID);

        //6.执行SQL
        int rs = prep.executeUpdate();

        System.out.println(rs);
        //7.释放资源
        prep.close();
        conn.close();
    }
}

控制台输出

表变化

四、使用PreparedStatement而不使用Statement的原因

1.PreparedStatement在使用时只需要编译一次,就可以运行多次,Statement每运行一次就编译一次,PreparedStatement的效率更高。
2.PreparedStatement需要的SQL语句为用?(占位符)来替换值,Statement所需要的SQL语句为字符串拼接。
3.PreparedStatement解决了SQL注入的问题,Statement没有解决,因为PreparedStatement有一个预编译的过程,就算传入占位符的数据中有SQL关键字也都被认为是值。Statement所需要的是字符串拼接,传入的整个字符串被默认为sql语句,如果用户手动拼接了字符串,那么会导致语句的改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值