关键词:
1. 数据库选型
MySQL5.5或者MySQL5.6
JDBC采用版本5.1.25
2. 访问数据库
与数据库的连接本质上是Socket连接。
- 加载驱动
//装载MySql驱动
Class.forName("com.mysql.jdbc.Driver");
//装载Oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
- DriverManager接口
- DriverManager是JDBC的管理层,作用于用户和驱动程序之间。
- DriverManager跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。
- Connection接口
Connection与特定数据库的连接(会话),在连接上下文中执行 SQL 语句并返回结果。
DriverManager的getConnection()方法建立在JDBC URL中定义的数据库Connection连接上
连接MYSQL数据库:
Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database","user","password");
连接ORACLE数据库:
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@host:port:databse","user","password");
- Statement接口
- 用于执行静态 SQL 语句并返回它所生成结果的对象。
- 三种Statement类:
- Statement:
由createStatement创建,用于发送简单的SQL语句。(不带参数的) - PreparedStatement:
继承自Statement接口,由prepareStatement创建,用于发送含有一个或多个输入参数的sql语句。PreparedStatement对象比Statement对象的效率更高,并且可以防止SQL注入。我们一般都用PreparedStatement. - CallableStatement:
继承自PreparedStatement 。由方法prePareCall创建,用于调用存储过程。
- 常用的Statement方法:
- execute():运行语句,返回是否有结果集(boolean)。
- executeQuery():运行select语句,返回ResultSet结果集。
- executeUpdate():运行insert/update/delete操作,返回更新的行数。
- ResultSet接口
Statement执行SQL语句时返回ResultSet结果集。
ResultSet提供了检索不同类型字段的方法,常用的有:
- getString():获得在数据库里是varchar、char等数据类型的对象。
- getFloat():获得杂数据库里是Float类型的对象。
- getDate():获得在数据库里面是Date类型的数据。
- getBoolean():获得在数据库里面是Boolean类型的数据
- 关闭连接
ResultSet -> Statement -> Connection
3. 批处理
- 对于大量的批处理,建议使用Statement,因为PreparedStatement的预编译空间有限,当数据量特别大时,会发生异常。
- 需手动关闭自动提交。
4. 事务
一组要么同时执行成功,要么同时执行失败的SQL语句。是数据库操作的一个执行单元!
- 事务开始于:
- 连接到数据库上,并执行一条DML语句(INSERT、UPDATE或DELETE)。
- 前一个事务结束后,又输入了另外一条DML语句。
- 事务结束于:
- 执行COMMIT或ROLLBACK语句。
- 执行一条DDL语句,例如CREATE TABLE语句;在这种情况下,会自动执行COMMIT语句。
- 执行一条DCL语句,例如GRANT语句;在这种情况下,会自动执行COMMIT语句。
- 断开与数据库的连接。
- 执行了一条DML语句,该语句却失败了;在这种情况中,会为这个无效的DML语句执行ROLLBACK语句。
- 事务的四大特点(ACID)
- atomicity(原子性)
表示一个事务内的所有操作是一个整体,要 么全部成功,要么全失败; - consistency(一致性)
表示一个事务内有一个操作失败时,所有的更改过的数据都必须回滚到修改前的状态; - isolation(隔离性)
事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。 - durability(持久性)
持久性事务完成之后,它对于系统的影响是永久性的。
- 事务隔离级别从低到高:
- 读取未提交(Read Uncommitted)
- 读取已提交(Read Committed)——默认
- 可重复读(Repeatable Read)
- 序列化(serializable)
5. 时间类型
- java.util.Date
子类:java.sql.Date 表示年月日
子类:java.sql.Time 表示时分秒
子类:java.sql.Timestamp 表示年月日时分秒 - 日期比较处理
插入随机日期
取出指定日期范围的记录
public static long str2Date(String dateStr)
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try
return format.parse(dateStr).getTime();
catch (ParseException e)
e.printStackTrace();
return 0;
......
ps = conn.prepareStatement("select * from t_user where lastLoginTime>? and lastLoginTime<? order by lastLoginTime ");
Timestamp start = new Timestamp(str2Date("2015-4-18 8:10:20"));
Timestamp end = new Timestamp(str2Date("2015-4-18 9:9:10"));
ps.setObject(1, start);
ps.setObject(2, end);
一般情况下使用long来表达时间是足够了。
6. CLOB(Character Large Object)
大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式
来处理的。而非一般的字段,一次即可读出数据。
- Mysql中相关类型:
TINYTEXT最大长度为255(–1)字符的TEXT列。
TEXT[(M)]最大长度为65,535(–1)字符的TEXT列。
MEDIUMTEXT最大长度为16,777,215(–1)字符的TEXT列。
LONGTEXT最大长度为4,294,967,295或4GB(–1)字符的TEXT列。
7. BLOB(Binary Large Object)
用于存储大量的二进制数据。大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式来处理的。一次即可读出该字段的数据。
- Mysql中相关类型:
TINYBLOB最大长度为255(–1)字节的BLOB列。
BLOB[(M)]最大长度为65,535(–1)字节的BLOB列。
MEDIUMBLOB最大长度为16,777,215(–1)字节的BLOB列。
LONGBLOB最大长度为4,294,967,295或4GB(–1)字节的BLOB列。
代码参考
springboot数据篇之使用jdbc
简介SpringData包含对JDBC的存储库支持,并将自动为?CrudRepository?上的方法生成SQL。对于更高级的查询,提供了[email protected]?注解。当classpath上存在必要的依赖项时,SpringBoot将自动配置SpringData的JDBC存储库。它们可以通过?spring-bo... 查看详情
第7章web07-jdbc篇
今日任务?使用JDBC完成对分类表的CRUD的操作(JDBC的回顾)?使用DBCP,C3P0连接池完成基本数据库的操作(抽取工具类)?使用元数据抽取一个JDBC的框架.?能够使用DBUtils完成CRUD的操作教学导航教学目标掌握DBCP和C3P0连接池的使用并掌握连接... 查看详情
javaweb07-html篇笔记
1.1案例一:使用JDBC完成CRUD的操作:1.1.1需求:对分类管理使用JDBC进行CRUD的操作.1.1.2分析:1.1.2.1技术分析:【JDBC的概述】?JDBC:JavaDataBaseConnectivityJava数据库的连接.是SUN公司统一提供的一套接口规范(JDBC).各个数据库生产商提供实现... 查看详情
java入门篇17--jdbc编程
...据,我们应当如何与数据库打交道呢,这个时候应该使用JDBC,就是java帮助我们实现了操控数据库的一些连接,我们只需要到时候加载一个连接数据库的插件下面即使java程序的对数据库的增删改查,以及事务处理importjava.sql.*;publ... 查看详情
整理java开发篇
...务隔离级别与传播机制spring单实例Java并发思考-导读&总结篇redis锁处理并发问题如何查看jvm中的各种参数以及默认值java命令行添加外部文件到classpath,从而实现读取外部配置文件Spring源码阅读笔记JDBC驱动加载原理全面解析谷... 查看详情
第14章web14-jdbc案例篇
今日任务?使用JDBC技术完成对商品的添加修改查询及分页的操作教学导航教学目标掌握JDBC的CRUD的操作掌握JDBC的分页操作教学方法案例驱动法1.1上次课内容回顾:JSP的模式:JSP的设计模式:JSP的模式一:JSP+JavaBean设计模式:JSP的模式二:J... 查看详情
javaweb08-html篇笔记
1.1上次课内容回顾:JDBC:*JDBC的概述:*JDBC:JavaDatabaseConnectivity*JDBC的API:*Connection:连接.*获得连接.*执行事务的管理.*Statement:*执行SQL语句.*intexecuteUpdate(Stringsql);*ResultSetexecuteQuery(Stringsql);*booleanexecute(String 查看详情
jdbc知识点总结
JDBC常用接口和类介绍:DriverManager: 用于管理JDBC驱动的服务类。主要功能是获取Connection对象。、 Connection getConnection():该方法获得URL对于数据库的连接。Connection: 代表数据库连接对象。每个Connection代表... 查看详情
jdbc万字长文总结回炉重造(代码片段)
JDBC-万字长文总结1.概述1.1什么是JDBC1.2JDBCAPI1.3JDBC可以做什么1.4JDBC程序编写步骤2.演示完整步骤2.1引入JDBC驱动程序2.2加载并注册驱动2.2.1Class.forName()2.2.2服务提供者框架2.3获取数据库链接2.4操作或访问数据库2.4.1Statement2.4.2ResultSet2.... 查看详情
jdbc总结(代码片段)
@TestpublicvoidtestUpdateWithTx()Connectionconn=null;try//1.获取连接的操作(//①手写的连接:JDBCUtils.getConnection();//②使用数据库连接池:C3P0;DBCP;Druid)//2.对数据表进行一系列CRUD操作//①使用Prepare 查看详情
运放使用总结篇运放高频增益的制约因素
...言一、结电容与结电容的影响二、密勒效应三、密勒电容总结前言前几篇我们讲了运放使用总结篇(1)运算放大器基本概念简介运放使用总结篇(2)运算放大器使用注意事项运放使用总结篇(3)运放供电情况下的偏置运放使用总结篇(4)... 查看详情
2021前端面试总结
HTML篇HTML面试总结CSS篇CSS面试总结JS篇js面试总结ES6面试总结vue篇vue面试总结微信小程序篇小程序面试总结 查看详情
运放使用总结篇运放的频率特性等效电路
...通的特性四、稳定性的概念前言前几篇我们讲了运放使用总结篇(1)运算放大器基本概念简介运放使用总结篇(2)运算放大器使用注意事项运放使用总结篇(3)运放供电情况下的偏置运放使用总结篇(4)运放使用的指标运放使用总结篇(5)... 查看详情
运放使用总结篇运放使用的指标
...、“轨”的概念三、运放的增益四、运放的开环增益五、总结六、例子前言前几篇我们讲了运放使用总结篇(1)运算放大器基本概念简介运放使用总结篇(2)运算放大器使用注意事项运放使用总结篇(3)运放供电情况下的偏置今天我们... 查看详情
一篇博客带你拿下吉林大学javaee期末(四:jdbc)
...学还可以大致过一下ppt,毕竟只有30页内容。1.什么是JDBC?JDBC(JavaDatabaseConnectivity)为Java应用程序访问关系数据库提供统一的访问接口。JDBC使得程序开发人员在编 查看详情
spring知识点总结spring整合jdbc(代码片段)
1.回顾JDBC a.java操作关系型数据的API。导入相关数据库的驱动包后可以通过JDBC提供的接口来操作数据库。 b.实现JDBC的六个步骤 &nb 查看详情
orleans学习总结--集群配置篇
上篇我们讲了Orleans学习总结(三)--持久化篇,这一篇我们来说说集群配置,毕竟这个才是Orleans的看家本领Orleans支持热起动,支持自动节点发现,能够断线重发等一系列黑科技。我这篇是以Zookeeper为例说明。 一、开启Zooke... 查看详情
12-1课程总结(代码片段)
....网络编程篇2.数据库篇3.Web框架篇4.系统设计篇5.面试经验总结二、Python基础高频考点Python语言基础考察点1.Python特性:装饰器、生成器与协程、异常处理2.常用内 查看详情