【JDBC操作】

求关注 求支持

1

快速入门

        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");//org.gjt.mm.mysql.Driver

        //获取链接
        String url="jdbc:mysql://127.0.0.1:3306/student";
        String username="root";
        String password="123456";
        Connection conn = DriverManager.getConnection(url, username, password);

        //定义SQL语句
        String sql= "update userinfo set username=1 where id=1";
        Statement st = conn.createStatement();

        //执行sql
        int i = st.executeUpdate(sql);//受影响行数

        //处理结果
        System.out.println(i);

        st.close();
        conn.close();

    }

DriverManager

作用:建立驱动,获取数据库连接

建立驱动 :DriverManager.registerDriver建立驱动,在Driver底层代码中已经建立,所以我们只需要利用Class.forName("com.mysql.jdbc.Driver");

MySQL5 以后的驱动包不需要获取驱动,在jar包中定义了.Driver的驱动类

获取数据库连接 DriverManager.getConnection(url, username, password);

  • url:连接路径 jdbc:mysql://ip地址:端口号/数据库名称?参数键值对&参数键值对
  • username:用户名
  • password:密码


    细节:
  1. 连接本机Mysql服务器,并且默认端口号为3306,可以简写为jdbc:mysql:///数据库名。
  2. 配置useSSL=false 参数,禁用安全连接方式,解决警告提示。

Connection

作用:获取执行SQL的的对象,管理事务
获取执行SQL的的对象

  • 普通执行SQL对象:createStatement()
  • 预编译的SQL执行SQL对象(防止SQL注入):PrepareStatement(sql)
  • 执行存储过程中的对象:prepareCall(sql)

管理事务
MySQL中事务管理:

  • start;(begin) //开启事务
  • commit; //提交事务
  • rollback; //回滚事务
  • (mysql默认自动提交事务)

JDBC中事务管理:

  • setAutoCommit(boolean autoCommit) true为自动提交false 手动提交//开启事务
  • commit(); //提交事务
  • rollback(); //回滚事务
      try {
            //开启事务
            conn.setAutoCommit(false);
           
            int i1 = st.executeUpdate(sql1);//受影响行数
            //处理结果
            System.out.println(i1);

            int i2 = st.executeUpdate(sql2);//受影响行数
            //处理结果
            System.out.println(i2);

            //提交事务
            conn.commit();
        } catch (SQLException e) {
            //出现异常,事务回滚
            conn.rollback();
        }

Statement

作用:执行SQL语句
执行SQL语句

  • executeUpdate(sql)执行DML,DDL语句
    返回值:(1)DML语句影响的行数(2)DDL执行成功后也可能返回0
  • executeQuery(sql)执行DQL语句
    返回值:ResultSet结果集对象

ResultSet

作用:执行SQL语句
执行SQL语句
执行:executeQuery(sql)执行DQL语句,返回ResultSet对象
获取查询结果:

  • next();将光标向前移动一行并判断是否为有效行(返回Boolean值)
  • getXxx();getInt,getString;(参数可以是int:列数,String:列名)
    使用:
while(rs.next()){
//获取数据
//列数
int a=rs.getInt(1);
String b=rs.getString(2);
String c=rs.getString(3);

/*
列名
int a=rs.getInt("a");
String b=rs.getString("b");
String c=rs.getString("c");

*/
}

PreparedStatement

作用:预防SQL注入问题

SQL注入 :是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。

使用方法

  1. 获取PreparedStatement对象
//SQL语句中参数值使用?占位符代替
String sql="select * from userinfo where username = ? and password = ?";

//通过Connection对象获取,并传入sql语句
PreparedStatement ps=conn.prepareStatement(sql);
  1. 设置参数值
ps.setXxx(参数1,参数2);
//参数1:?的位置(从1开始)
//参数2:?的值
  1. 执行SQL
executeUpdate();//executeQuery();不需要传递sql

数据库连接池

什么是数据库连接池:
当一个用户要使用数据库时,需要建立connection连接,用完即释放,十分浪费;我们可以建立一个容器,放一堆connection,用户用完再放回去,这个容器就叫数据库连接池。
在这里插入图片描述
定义

  • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
  • 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗
    好处
  • 资源重用
  • 提升系统响应速度
  • 避免资源连接遗漏
    使用
 		//导入jar包
//https://mvnrepository.com/artifact/com.alibaba/druid/1.1.12
        //定义配置文件
        //加载配置
        Properties pro=new Properties();
        	//使用File导入编辑文本
        pro.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(pro);
        //获取数据库连接Connection
        Connection connection = dataSource.getConnection();
        System.out.println(connection);

        /*Statement st = connection.createStatement();
        String sql="select * from account";
        ResultSet rs = st.executeQuery(sql);
        while(rs.next()){
            int id = rs.getInt(1);
            String user=rs.getString(2);
            String pass=rs.getString(3);
            System.out.println(id+user+pass);
        }*/

		//配置文件,在src下建立Resource BUndle文件
		/**driverClassName=com.mysql.jdbc.Driver
			url=jdbc:mysql:///student
			username=root
			password=123456
			#初始化连接数量
			initialSize=5
			#最大连接数
			maxActive=10
			#最大等待时间
			maxWait=3000
		*/
跪谢查阅
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小橙菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值