MySQL JDBC

本文详细介绍了Java数据库连接(JDBC)的使用,包括如何注册驱动、建立数据库连接、执行SQL语句及管理事务。示例代码展示了如何通过JDBC操作MySQL数据库,执行查询和数据操作。同时,讲解了Statement和PreparedStatement的区别,以及ResultSet对象的使用方法,帮助读者深入理解JDBC的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC


  • JDBC(java database connectivity): sun公司为了简化和统一java连接数据库,定义的一套**规范(**类,接口)

实现用java代码操作Mysql


	import com.mysql.jdbc.Driver;
	import java.sql.*;
	
	public class Idejdbc {
	    public static void main(String[] args) throws Exception {
	        /**
	         * -- 先准备好驱动包到模块下,并添加依赖
	         * 1.注册驱动
	         * 2.获得连接
	         * 3.创建执行sql语句对象
	         * 4.释放资源
	         */
	
	        // 注册驱动 or Class.forName("import com.mysql.jdbc.Driver"); 
	        DriverManager.registerDriver(new Driver()); // 驱动版本5及以上可以不写注册驱动,自动加载
	        
	
	        // 获得连接
	        String url = "jdbc:mysql://localhost:3307/day18?useSSL = false"; // 连接地址
	        String user = "root"; // 用户名
	        String password = "123456";// mm
	        Connection connection = DriverManager.getConnection(url, user, password);
	
	        // 创建声明sql语句对象
	        Statement statement = connection.createStatement();
	
	        // 编写sql语句
	        String sql = "select * from user";
	        //执行sql语句,得到结果
	        ResultSet resultSet = statement.executeQuery(sql);
	        while(resultSet.next()){ // 每遍历一次就指向下一个索引
	            System.out.println(resultSet.getObject("id"));// 也可以写索引
	            System.out.println(resultSet.getObject("username"));
	            System.out.println(resultSet.getObject("password"));
	            System.out.println(resultSet.getObject("nickname"));
	        }
	
	        // 释放资源
	        resultSet.close();
	        statement.close();
	        connection.close();
	
	    }
}

JDBC Api 详解

  • DriverManager(驱动管理类)
    - 注册驱动
    - 获取数据库连接

	注册驱动 (加载类)
	Class.forName("com.mysql.jdbc.Driver") // // 驱动版本5及以上可以不写注册驱动,自动加载
	
	jdbc:遵循的协议,mysql:子协议,localhost:3307:数据库所在的服务器地址,如果是在本地默认为127.0.0.1:3306,可以省略不写, ?useSSL = false:表示禁用SSL安全检查,可提升执行效率
	jdbc:mysql://localhost:3307/day18?useSSL = false

  • Connection(数据库连接对象)
    • 获取执行SQL的对象
    • 管理事务

	// 普通执行SQL对象
	Statement createStatement()
	// 预编译SQL的执行SQL对象:防止SQL注入
	PreparedStatement prepareStatement(sql)

	// MySQL事务管理
	开启事务:BEGIN; / START TRANSACTION
	提交事务:COMMIT;
	回滚事务:ROLLBACK;

	// MySql默认自动提交事务

	// JDBC事务管理:Connection 接口中定义了3个对应的方法
	开启事务:setAutoCommit(boolean autoCommit) true为自动提交事务;false为手动提交事务
	提交事务:commit()
	回滚事务:rollabck()

  • Statement(执行语句)
    • 执行SQL语句

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

  • ResultSet(结果集对象)
    • 封装了DQL查询语句的结果

	 // 执行DQL语句,返回ResultSet对象
	ResultSet statement.executeQuery(sql)

	// 获取查询结果 返回值 :true有效行,当前行有数据 false无效行,当前行没有数据
	boolean next() : 1.将光标从当前位置向下移动一行 2.判断当前行是否为有效行


	// Xxx:数据类型 如int getInt(参数); String getString(参数);
	getXxx(参数):获取数据 // int :列的编号,从1开始 String : 列的名称
	

  • PreparedStatement
    • 预编译SQL并执行SQL语句

	// SQL语句中的参数值 ,使用? 占位符替代 
	String sql = "select * from user where username = ? and password = ?";
	
	// 通过Connection对象获取,并传入对应的Sql语句
	PreparedStatement ps = connection.prepareStatement(sql);


	// 参数设置
	PreparedStatement对象:setXxx(参数1,参数2):用来给?赋值
	// 参数:参数1,?的位置编号,从1开始

	// 执行SQL
	executeUpdate(); / executeQuery(); // 不需要再传递SQL语句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值