首页 > 其他分享 >2022-8-18 第六组 JDBC

2022-8-18 第六组 JDBC

时间:2022-08-19 21:22:07浏览次数:46  
标签:JDBC String 18 数据库 sql stmt jdbc 2022 mysql

JDBC

1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库

JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

2. 快速入门:

* 步骤:
	1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
		1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
		2.右键-->Add As Library
	2. 注册驱动
	3. 获取数据库连接对象 Connection
	4. 定义sql
	5. 获取执行sql语句的对象 Statement
	6. 执行sql,接受返回结果
	7. 处理结果
	8. 释放资源

代码实现:

		//1. 导入驱动jar包
		//2.注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		//3.获取数据库连接对象
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");
		//4.定义sql语句
		String sql = "update account set balance = 500 where id = 1";
		//5.获取执行sql的对象 Statement
		Statement stmt = conn.createStatement();
		//6.执行sql
		int count = stmt.executeUpdate(sql);
		//7.处理结果
		System.out.println(count);
		//8.释放资源
		stmt.close();
		conn.close();

3. 详解各个对象:

1. DriverManager:驱动管理对象

* 功能:
1. 注册驱动:告诉程序该使用哪一个数据库驱动jar
			static void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager 。 
			写代码使用:  Class.forName("com.mysql.jdbc.Driver");
			通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块
			 static {
			        try {
			            java.sql.DriverManager.registerDriver(new Driver());
			        } catch (SQLException E) {
			            throw new RuntimeException("Can't register driver!");
			        }
				}
			注意:mysql5之后的驱动jar包可以省略注册驱动的步骤。
2. 获取数据库连接:
			* 方法:static Connection getConnection(String url, String user, String password) 
			* 参数:
				* url:指定连接的路径
					* 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
					* 例子:jdbc:mysql://localhost:3306/db3
					* 细节:如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称
				* user:用户名
				* password:密码 

2. Connection:数据库连接对象

	1. 功能:
		1. 获取执行sql 的对象
			* Statement createStatement()
			* PreparedStatement prepareStatement(String sql)  
		2. 管理事务:
			* 开启事务:setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务
			* 提交事务:commit() 
			* 回滚事务:rollback() 

3. Statement:执行sql的对象

	1. 执行sql
		1. boolean execute(String sql) :可以执行任意的sql 了解 
		2. int executeUpdate(String sql) :执行DML(insert、update、delete)语句、DDL(create,alter、drop)语句
		* 返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0的则执行成功,反之,则失败。
		3. ResultSet executeQuery(String sql)  :执行DQL(select)语句

4. ResultSet:结果集对象,封装查询结果

	* boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true
	* getXxx(参数):获取数据
		* Xxx:代表数据类型   如: int getInt() ,	String getString()
		* 参数:
			1. int:代表列的编号,从1开始   如: getString(1)
			2. String:代表列名称。 如: getDouble("balance")
	
	* 注意:
		* 使用步骤:
			1. 游标向下移动一行
			2. 判断是否有数据
			3. 获取数据

		   //循环判断游标是否是最后一行末尾。
            while(rs.next()){
                //获取数据
                //6.2 获取数据
                int id = rs.getInt(1);
                String name = rs.getString("name");
                double balance = rs.getDouble(3);

                System.out.println(id + "---" + name + "---" + balance);
            }

练习:

		1. account表 添加一条记录
		2. account表 修改记录
		3. account表 删除一条记录

		代码:
			Statement stmt = null;
	        Connection conn = null;
	        try {
	            //1. 注册驱动
	            Class.forName("com.mysql.jdbc.Driver");
	            //2. 定义sql
	            String sql = "insert into account values(null,'王五',3000)";
	            //3.获取Connection对象
	            conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");
	            //4.获取执行sql的对象 Statement
	            stmt = conn.createStatement();
	            //5.执行sql
	            int count = stmt.executeUpdate(sql);//影响的行数
	            //6.处理结果
	            System.out.println(count);
	            if(count > 0){
	                System.out.println("添加成功!");
	            }else{
	                System.out.println("添加失败!");
	            }
	
	        } catch (ClassNotFoundException e) {
	            e.printStackTrace();
	        } catch (SQLException e) {
	            e.printStackTrace();
	        }finally {
	            //stmt.close();
	            //7. 释放资源
	            //避免空指针异常
	            if(stmt != null){
	                try {
	                    stmt.close();
	                } catch (SQLException e) {
	                    e.printStackTrace();
	                }
	            }
	
	            if(conn != null){
	                try {
	                    conn.close();
	                } catch (SQLException e) {
	                    e.printStackTrace();
	                }
	            }
	        }

标签:JDBC,String,18,数据库,sql,stmt,jdbc,2022,mysql
From: https://www.cnblogs.com/ychptz/p/16600415.html

相关文章

  • 2022-8-19 第一组 (≥▽≤) 学习笔记
    目录1.JDBC2.数据库事务面试题1.JDBCStatement的不足之处大量的字符串拼接,代码可读性降低sql注入PreparedStatement——预编译(预加载)接口通过Connection获取的......
  • 2022暑假集训总结
    经过简介7月20日到达内江天立学校,在小学部的机房上课。这里没什么人,比较安静,也没有那么热,学习环境挺好的。开始是老姚给我们上的课,主要讲了tarjan,然后由几位学长讲课。期......
  • 【2022-08-19】mysql基础知识(六)
    mysql基础知识(六)mysql之视图view什么是视图?视图就是通过查询得到的一张虚拟表,然后保存下来,下次直接进行使用即可。即:将SQL语句的查询结果当做虚拟表保存起来,以后可......
  • 20220819总结
    这次考试太烂了,又没考过Diavolo。T1简单的入门题,先热身。#include<iostream>#defineintlonglong#defineN5001usingnamespacestd;intn,ans;doublea[N]......
  • 状压DP-1815. 得到新鲜甜甜圈的最多组数
    问题描述有一个甜甜圈商店,每批次都烤 batchSize 个甜甜圈。这个店铺有个规则,就是在烤一批新的甜甜圈时,之前所有 甜甜圈都必须已经全部销售完毕。给你一个整数batchSi......
  • 2022-08-19 田龙跃 JDBC知识
    JAVA链接数据库步骤1.加载驱动2.建立链接3.获取statement语句对象执行sql4.处理结果集5.关闭连接加载驱动Class.forName(驱动名称)建立连接connection=DriverMa......
  • 2022-8-19第一组孙乃宇JDBC学习2
    JDBC的学习Statement的不足:大量的字符串拼接,代码可读性降低。sql注入SQL注入:BUG通过字符串的拼接,可以得到一个恒等的sql语句,可以跳过某些判断。如login("zxcvzx......
  • 2022-08-19 第四组 王佳齐 学习笔记
    思维导图学习笔记PreparedStatement:预编译(预加载)接口2.事务处理可以用来维护数据的完整性。保证sql语句要么全执行,要么全部不执行。1.通过conn获取的对象2.是Stateme......
  • 2022-08-19 记录一下 奥睿科 2.5/3.5英寸双盘位USB3.0硬盘底座 使用感受
    什么?电脑识别不了硬盘???我把京东客服给骂了,再到我写这个随笔的时候,有点心疼那个京东客服。为了扩容,昨天入手了希捷的2t机械家用盘,以及这次的主角奥睿科硬盘底座,简称硬盘盒......
  • 2022-08-19 田龙跃 JAVAWEB项目(小论坛)
    JAVA小项目E-R图个人理解:E-R图中每个实体到我们对java中就是一个domin类,字段就是属性流程图注册流程图登录流程图JSTL标签jstl表达式:表达式的用法也是见名知义(和......