JDBC连接MySQL数据库

JDBC连接的基本操作

1、在idea的pom.xml文件中加入Maven依赖
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.49</version>
</dependency>

添加完依赖后,点击鼠标右键->选择Maven->选择Reload Project

2、JDBC连接步骤
  • 1)加载驱动
  • 2)创建一个连接
  • 3)创建Statement或PreparedStatement的对象
  • 4)通过创建对象调用方法执行SQL语句
    • 调用执行DQL(select)操作时,使用executeQuery方法,就会返回单个ResultSet对象
    • 调用执行DML(insert,update,delete)操作时,使用executeUpdate方法,返回的是受影响的记录的条数
    • 调用其他操作使用execute方法,返回的是布尔类型,表示执行的SQL语句有无返回值,true表示执行的SQL语句有返回值即有ResultSet对象,false表示执行的SQL语句没有返回值
  • 5)如果是使用executeQuery方法,就会返回单个ResultSet对象,获得结果集,然后通过遍历ResultSet获取返回的记录
  • 6)关闭连接

Statement示例代码

package MySQlJDBC;

import java.sql.*;

public class MySQLJDBCDemo {
   
    public static void main(String[] args) throws Exception {
   
        //1、加载驱动
        Class.forName("com.mysql.jdbc.Driver");

        //2、创建连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://master:3306/db1?useSSL=false", "root", "123456");

        //3、创建Statement
        Statement st = conn.createStatement();
        
        //4、通过Statement执行SQL
        ResultSet rs = st.executeQuery("select *from student limit 10");

        //5、遍历ResultSet获取返回的记录
        while (rs.next()) {
   
            int id = rs.getInt("id");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            String gender = rs.getString("gender");
            String clazz = rs.getString("clazz");
            System.out.println(id + "," + name + "," + age + "," + gender + "," + clazz);
        }

        //6、关闭连接
        st.close();
        conn.close();
    }
}
3、JDBC执行SQL的两种方式(Statement与PreparedStatement)
  1. 使用Statement对象
    使用范围:当执行相似SQL(结构相同,具体值不同)语句的次数比较少
    优点:语法简单
    缺点:采用硬编码效率低,安全性较差。直接使用变量拼接SQL会造成SQL注入问题
    原理:硬编码,每次执行时相似SQL都会进行编译
  2. 预编译PreparedStatement
    使用范围:当执行相似sql语句的次数比较多(例如用户登陆,对表频繁操作…)语句一样,只是具体的值不一样,被称为动态SQL
    优点:语句只编译一次,减少编译次数。提高了安全性(阻止了SQL注入)
    缺点: 执行非相似SQL语句时,速度较慢。
    原理:相似SQL只编译一次,减少编译次数

PreparedStatement示例代码

package MySQlJDBC;

import java.sql.*;

public class MySQLJDBCDemo {
   
    public static void main(String[] args) throws Exception {
   
        //1、加载驱动
        Class.forName("com.mysql.jdbc.Driver");

        //2、创建连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://master:3306/db1?useSSL=false", "root", "123456");

        String clz="文科二班";
        int age1=23;
        
        //3、使用PreporeStatement避免SQL注入问题
        PreparedStatement ps = conn.prepareStatement("select *from student where clazz=? and age>?");

        //4、通过PreporeStatement执行SQL
        //先设置参数,'?'从1开始编号
        ps.setString(1,clz);
        ps.setInt(2,age1);
        //再执行sql
        ResultSet rs = ps.executeQ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值