JDBC主要内容总结

JDBC

1、JDBC是什么?
Java DataBase Connectivity(Java语言连接数据库)

2、JDBC的本质是什么?
JDBC是SUN公司制定的一套接口(interface)
java.sql.*; (这个软件包下有很多接口。)

接口都有调用者和实现者。
面向接口调用、面向接口写实现类,这都属于面向接口编程。

为什么要面向接口编程?
	解耦合:降低程序的耦合度,提高程序的扩展力。
	多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)
		建议:
			Animal a = new Cat();
			Animal a = new Dog();
			// 喂养的方法
			public void feed(Animal a){ // 面向父类型编程。
			
			}
		不建议:
			Dog d = new Dog();
			Cat c = new Cat();

思考:为什么SUN制定一套JDBC接口呢?
	因为每一个数据库的底层实现原理都不一样。
	Oracle数据库有自己的原理。
	MySQL数据库也有自己的原理。
	MS SqlServer数据库也有自己的原理。
	....
	每一个数据库产品都有自己独特的实现原理。

JDBC的本质到底是什么?
	一套接口。

3、JDBC开发前的准备工作,先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath当中。

classpath=.;D:\course\06-JDBC\resources\MySql Connector Java 5.1.23\mysql-connector-java-5.1.23-bin.jar

以上的配置是针对于文本编辑器的方式开发,使用IDEA工具的时候,不需要配置以上的环境变量。
IDEA有自己的配置方式。

JDBC编程六步(需要背会)

第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)

第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)

第三步:获取数据库操作对象(专门执行sql语句的对象)

第四步:执行SQL语句(DQL DML....)

第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)

第六步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)

JDBC编程六步的具体代码,需要熟练敲打

/*
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;*/
import java.sql.*;
public class JDBCTest
{
	public static void main(String[] args){
		//JDBC编程六步
		/*
		1、注册驱动
		2、获取数据库连接
		3、获取数据库操作对象
		4、执行SQL语句
		5、处理查询结果集(只有当第四步的SQL语句是查询语句时才需要进行)
		6、释放资源
		注意:需要对异常进行捕捉try 。。。catch 或者抛出throws
		*/
		Connection conn=null;
		Statement stmt=null;
		ResultSet rs=null;
		try{
			//1、注册驱动
			//com.mysql.cj.jdbc.Driver 是mysql厂家编写的,实现了java.sql.Driver接口。
			//需要注意的是:下面的两个Driver中有一个包名无法省略,因为如果省略了,java将无法分辨两个Driver
			DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());//这里就是注册驱动
			

			//2、获取数据库连接
			String url="jdbc:mysql://localhost:3306/mysql";
			String user="root";
			String password="123";
			conn=DriverManager.getConnection(url,user,password);
			System.out.println(conn);//com.mysql.cj.jdbc.ConnectionImpl@7a36aefa



			//3、获取数据库的操作对象
			//通过一个连接对象Connection是可以创造多个操作对象的
			stmt=conn.createStatement();
			


			//4、执行SQL语句
			//String insertSql="insert into c_student(no,name,password) values(50,'张三','ccc')";插入
			String updateSql="update c_student set name='小花' , password='ddd' where no=1";
			//int count=stmt.executeUpdate(insertSql);
			int count=stmt.executeUpdate(updateSql);
			//executeUpdate()这个方法的返回值是一个整数
			System.out.println(count);



			//5、处理查询结果集
			String selectSql=" select * from c_student";
			rs=stmt.executeQuery(selectSql);
			while(rs.next()){
				int no=rs.getInt("no");
				String name=rs.getString("name");
				String password1=rs.getString("password");
				System.out.println(no+","+name+","+password);
			}


		}
		catch(SQLException e){
			//打印异常信息
			e.printStackTrace();

		}
		finally{
			//6、释放资源
			//先释放ResultSet结果集,然后释放Statement操作对象,最后释放Connection连接对象
			if(rs!=null){
				try{
					rs.close();
				}catch(SQLException e){
					e.printStackTrace();
				}
			}
			if(stmt!=null){
				try{
					stmt.close();
				}catch(SQLException e){
					e.printStackTrace();
				}
			}
			if(conn!=null){
				try{
					conn.close();
				}catch(SQLException e){
					e.printStackTrace();
				}
			}
		}



	}
}

使用资源管理器,读取属性配置文件

在这里插入图片描述

配置文件编写

在这里插入图片描述

使用预编译的数据库操作对象,解决SQL注入问题

在这里插入图片描述

事务

在这里插入图片描述

将自动提交机制改成手动提交

Connection中有一个方法,setAutoCommit,返回值为void,有一个参数autoCommit,为真表示启动自动提交模式。为false表示禁用自动提交模式

在这里插入图片描述

在这里插入图片描述

整个jdbc的事务主要是三行代码,需要背熟

封装jdbc工具类DBUtil

在同一个没有结束的程序中,DBUtil只加载一次

1、注册驱动,使用静态代码块

静态变量与静态代码块都是类加载的时候就开始执行,但是按照自上而下的顺序进行读取

在这里插入图片描述

2、获取连接

在这里插入图片描述

3、释放资源

如果没有结果集的时候,即sql语句不是进行查询操作时,可以将rs这个参数传一个空值null;因为释放资源时是有判断是否为空的

在这里插入图片描述

关于DQL语句的悲观锁

在这里插入图片描述

在这里插入图片描述

oracle数据库的属性配置文件的编写
在这里插入图片描述

查询语句—【整理】:

 1.查询命令:              from   where   gourp by   having  select order by  limit

 2.查询命令执行优先级     
 from: 一个查询语句永远最先执行的命令  from;负责将硬盘表文件加载到内存生成临时表
 where:循环遍历内存中临时表中数据行,每次定位一个数据行,如果这个数据行满足定位
									条件保存到一个全新的临时表
group by : 对临时表中数据行进行分类。将具有相同特征数据行保存到同一个临时表
having:    过滤group by生成的临时表,将不满足条件的临时表从内存删除
select :如果select面对临时表来自于[from,where],select将指定字段所有的内容读取出来保存到一个全新临时表中。如果select面对临时表来自于[group by ,having],select往往面对多个临时表。此时select对某一个临时表字段读取时,只会读取当前字段的第一个行数据。读取内容保存到全新临时表

order by: 对select生成的临时表内容进行排序。将排序后数据行保存到一个全新的临时表
limit: 只存在mysql数据库。对当前临时表指定数据行进行截取
from > where > group by  >having > select > order by >limit


 3.查询语句特征:
                        
1.查询命令执行时,不会对表中数据进行修改
2.七个查询命令中,除了from命令之外,其他六个查询命令操作临时表都是上一个查询命令生成临时表
3.七个查询命令中,除了having命令之外其他六个查询命令在执行完毕后一定会在内存产生临时表。
4.在某一个查询命令执行完毕后,mysql自动将上一个查询命令生成的临时表 进行删除.在查询语句执行完毕后,用户看到临时表由查询语句中最后执行的查询命令提供

5.细化:
          where命令与having命令区别

			 1.where现在group by 前面,在group by之前执行

			 2.where执行完毕后,一定会生成临时表。having不会生成临时表,有可能删除已经存在临时表

			 3.where循环遍历临时表每一个数据行。where后面使用判断条件不能使用聚合函数(count(),				sum(),max())

			   having循环遍历每次遍历是一个临时表。having后面一般都是用聚合函数作为判断条件。

                    主要的学习任务

1.任务:
掌握互联网通信开发流程(增删改查)

2.学习内容:
1.【重要】掌握互联网通信流程和特征

		 2.【Servlet规范】:Java文件在互联网通信中地位和作用

		 3.【JSP规范】: 如何将JAVA中数据与HTML标签写入到用户浏览器上

		 4.【AJAX】:     控制浏览器发送请求行为和浏览器展示数据行为

		 5.【jquery】:   JavaScript封装版。简化JavaScript操作DOM对象难度

		 6.【MVC开发模式】:互联网开发时,黄金规则

		 7.【常识性技能】 ThreadLocal, 代理设计模式------》20000

		                  static理解   反射机制

以上是对动力节点杜老师JDBC相关课程上课的课堂笔记的总结

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 图书管理系统是一个用于管理图书馆馆藏书籍、借阅情况、读者信息等的软件系统。基于JavaMySQL,结合JDBC技术,我们可以实现一个简单的图书管理系统。以下是一个简单的图书管理系统的源代码示例: 首先,我们需要建立一个名为“图书管理系统”的数据库,并创建三个表格:book(书籍信息)、reader(读者信息)和borrow(借阅情况)。 在Java中,我们可以使用JDBC来连接数据库并进行数据的增删改查操作。可以通过以下步骤来实现: 1. 导入JDBCMySQL相关的库 import java.sql.*; 2. 建立与数据库的连接 Connection conn = null; conn = DriverManager.getConnection("jdbc:mysql://hostname:port/dbname", "username", "password"); 3. 查询书籍信息 Statement stmt = null; stmt = conn.createStatement(); String sql = "SELECT * FROM book"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { String bookId = rs.getString("book_id"); String bookName = rs.getString("book_name"); System.out.println("Book ID: " + bookId + ", Book Name: " + bookName); } 4. 插入书籍信息 String sql = "INSERT INTO book (book_id, book_name) VALUES (?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "1"); pstmt.setString(2, "Java入门指南"); pstmt.executeUpdate(); 5.更新书籍信息 String sql = "UPDATE book SET book_name = ? WHERE book_id = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "Java高级编程"); pstmt.setString(2, "1"); pstmt.executeUpdate(); 6.删除书籍信息 String sql = "DELETE FROM book WHERE book_id = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "1"); pstmt.executeUpdate(); 以上是一个简单的图书管理系统的源代码示例,通过使用Java编程语言和JDBC技术,结合MySQL数据库,我们可以实现对图书信息的增删改查操作。当然,实际的图书管理系统可能需要涉及更多的功能和表格,但这个例子可以作为一个起点来理解如何使用JavaJDBCMySQL来构建一个图书管理系统。 ### 回答2: 基于JavaJDBCMySQL的图书管理系统源代码主要涉及到数据库操作、用户界面设计和业务逻辑处理等方面。 首先,我们需要建立一个MySQL数据库,用于存储图书和用户信息。可以创建两个表,一个用于存储图书信息,包括图书编号、图书名称、作者、出版社等字段;另一个用于存储用户信息,包括用户编号、用户名、密码等字段。 接下来,我们使用JDBC连接数据库并进行相应的操作。可以通过编写Java代码实现数据库的增、删、改、查等功能。例如,可以编写一个类来处理图书的增加、删除和修改功能,通过输入图书信息和相应的SQL语句来执行对应的数据库操作。 同时,我们还需要设计一个用户界面,通过用户界面与数据库进行交互。可以使用Java的Swing或JavaFX等库来设计图形化界面,通过按钮、文本框等组件来与用户进行交互。例如,在图书添加功能中,用户可以通过界面输入图书信息,并点击“确认”按钮,将输入的图书信息添加到数据库中。 在业务逻辑处理方面,我们可以编写Java代码来实现用户登录、借阅图书、归还图书等功能。例如,用户登录时需要验证用户名和密码是否匹配,可以通过从数据库中查询用户信息,并进行验证。借阅图书时需要判断图书是否可借阅,可以通过查询图书信息并检查借阅状态来实现。归还图书时需要将借阅状态更新为已归还,并更新相应的数据库记录。 总结起来,基于JavaJDBCMySQL的图书管理系统源代码主要包括建立数据库、使用JDBC进行数据库操作、设计用户界面和编写业务逻辑处理等方面的内容。这些代码可以帮助实现一个功能完善的图书管理系统,提供方便快捷的图书管理服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值