JDBC:Java DataBase Connectivity Java程序访问数据库的标准接口 使用Java程序访问数据库的时候,Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接口来访问,而JDBC的接口通过JDBC驱动来真正实现对数据库的访问. JDBC接口是由JDK定义,并内置在JDK中. 具体的数据库驱动是由数据库厂商提供的,如mysql驱动是由Oracle提供的 实际上mysql的驱动就是一个Jar包,本身也是一个纯Java编写的Jar包.自己编写的类java,sq…
1. JDBC连接池 1.1 JDBC连接池简介 线程池可以复用一个线程,这样大量的小任务通过线程池的线程执行,就可以避免反复创建线程带来的开销. 同样JDBC可以复用一个JDBC连接 JDBC的连接池可以维护若干个JDBC连接,在执行数据库任务的时候,可以从连接池中直接获取连接,而不是反复创建和关闭JDBC连接 1.2 JDBC连接池接口: javax.sql.DataSource JDK只提供了连接池的定义,所以我们还要实现JDBC的连接池.常用的开源实现: * HikariCP * C3P…
1 数据库事务:Transaction 1.1 定义 若干SQL语句构成的一个操作序列 要么全部执行成功 要么全部执行不成功 1.2 数据库事务具有ACID特性: Atomicity:原子性 一个事务虽有若干SQL语句构成,但它本身是一个原子操作,要么全部成功,要么全部失败 Consistency:一致性 一个事务在开始前或结束之后,数据库的数据是完整的,不存在冲突和数据不一致的情况 Isolation:隔离型 多个事务并发执行的时候,事务之间是隔离的,一个事务不应该影响其他事务运行的结果 Du…
使用update语句的时候,需要通过JDBC实现update语句的执行,这个时候仍然通过PreparedStatement对象来使用,直接传入update语句,然后通过setObject传入占位符的值,最后通过executeUpdate()就可以执行这个update语句. executeUpdate()返回值是int,代表符合条件的记录数量. 1. update //update try(Connection conn = DriverManager.getConnection(JDBC_URL…
我们可以使用JDBC查询来执行select语句. 1. Statement try(Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD)){ try(Statement stmt = conn.getStatement()){ try(ResultSet rs = stmt.executeQuery("select * from students where gender=\'M\'&q…
1.数据库 1.1 定义 数据库是按照数据结构来组合.存储和管理数据的软件. 1.2 数据库模型 数据库有层次模型.网状模型.关系模型三种模型. 2 关系数据库 关系数据库是建立在关系模型上的数据库,也是应用最广泛的主流数据库. 主流的关系数据库: 商业:Oracle,SQL Server,DB2,Sybase 开源:MySQL,PostgreSQL 桌面:Access 3 关系模型 关系数据库所使用的模式是关系模型. 一个关系表就是一个二维的表格,每一行为一条记录. 如班级信息用classes…
1.IO简介 IO是指Input/Output,即输入和输出: Input指从外部读取数据到内存,例如从磁盘读取,从网络读取. * 为什么要把数据读到内存才能处理这些数据呢? * 因为代码是在内存中运行的,数据也必须读取到内存.数据在Java中的表现形式是byte数组.字符串. Output指把数据从内存输出到外部,例如写文件,输出到网络. * Output是把Java的表现格式如byte数组.字符串输出到某个地方,如硬盘的某个文件. IO流是一种顺序读写数据的模式: 单向流动,类似水管中水的流…
1. INSERT用于向数据库的表中插入1条记录 insert into 表名 (字段1,字段2,...) values (数据1,数据2,数据3...) 示例 -- 如果表存在,就删除 drop table if exists classes; show tables; create table classes (id BIGINT not null auto_increment, name varchar(10) not null,PRIMARY KEY(id)) default chars…
1.SQL:结构化查询语言 Structured Query Language 针对关系数据库设计 各种数据库基本一致 允许用户通过SQL查询数据而不关心数据库底层存储结构 1.1 SQL使用: 可以直接通过数据库提供的命令行界面使用 可以和各种编程语言继承实现访问数据库功能 1.2 SQL分类: DDL:Data Definition Language 创建表/删除表/修改表结构 DQL:Data Query Language 查询记录 DML:Data Manipulation Langua…
1.InputStream 1.1InputStream是所有输入流的超类: int read() * 读取下一个字节,并返回字节(0-255) * 如果已读到末尾,返回-1 * read()方法是阻塞(blocking)的,必须等待read()方法返回才能执行下一行代码 int read(byte[]):读取若干字节并填充到byte[]数组,返回读取的字节数 int read(byte[], int off, int len):指定byte[]数组的偏移量和最大填充术数. void close…