JDBC记录
13:55 2018/7/22
用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问
---------常用API---------
|- Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。
|- connect(url, properties): 连接数据库的方法。
|- DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序
|-registerDriver(driver) : 注册驱动类对象
|-Connection getConnection(url,user,password); 获取连接对象
|- Connection接口: 表示java程序和数据库的连接对象。
|- Statement createStatement() : 创建Statement对象
|- PreparedStatement prepareStatement(String sql) 创建PreparedStatement对象
|- CallableStatement prepareCall(String sql) 创建CallableStatement对象
|- Statement接口: 用于执行静态的sql语句
|- int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML)
|- ResultSet executeQuery(String sql) :执行的静态的查询sql语句(DQL)
|-PreparedStatement接口:用于执行预编译sql语句
|- int executeUpdate() : 执行预编译的更新sql语句(DDL,DML)
|- ResultSet executeQuery() : 执行预编译的查询sql语句(DQL)
|- CallableStatement接口:用于执行存储过程的sql语句(call xxx)
|- ResultSet executeQuery() : 调用存储过程的方法
|- ResultSet接口:用于封装查询出来的数据
|- boolean next() : 将光标移动到下一行
|- getXX() : 获取列的值
-----------连接---------------
【注册驱动】
Class.forName("com.mysql.jdbc.Driver");
【通过DriverManager获取连接对象】
DriverManager.getConnection(url,user,password);
JDBC的URL=协议名+子协议名+数据源名
// jdbc:mysql://localhost:3306/database
// jdbc:mysql:///database 同上简写
-----------执行DDL/DML------------
1)获取连接对象
2)获取statement对象
statement = connection.createStatement();
3)执行
statement.executeUpdate(sql); //增删改
-----------执行DQL------------
1)获取连接对象
2)获取statement对象
3)获取结果集
ResultSet result = statement.executeQuery(sql);
-----------ResultSet------------
数据结果集对象
boolean next() 默认表头,次行无数据返回false
【getXXX()】
result.getInt(1); //通过索引(从1开始)
result.getInt("id"); //通过字段名
-----------Statement------------
用于执行静态的sql语句
int executeUpdate(String sql) 执行静态的更新sql语句(DDL,DML)
ResultSet executeQuery(String sql) 执行的静态的查询sql语句(DQL)
---------PreparedStatement----------
继承Statement,执行预编译sql
【不同于Statement】
1)预编译sql语句,防止sql注入
2)可以使用sql数据库缓存区,效率高
connection.prepareStatement("insert into student_(name,gender) values(?,?)")
//设置占位符,索引从1开始
prepareStatement.setString(1, "xyg");
prepareStatement.setString(2, "h5");
------------CallableStatement--------
继承PreparedStatement,执行存储过程
CallableStatement callableStatement = connection.prepareCall(sql);
// 获取结果对象
ResultSet resultSet = callableStatement.executeQuery();
【带有返回值的存储过程】
String sql = "call getEmployById2(?,?)";
CallableStatement callableStatement = connection.prepareCall(sql);
// 设置输入参数
callableStatement.setInt(1, 2);
//设置输出参数
callableStatement.registerOutParameter(2, java.sql.Types.VARCHAR);
//执行
callableStatement.executeQuery();
//获取输出参数
//索引值与设置输出参数的位置一样
String name = callableStatement.getString(2);//getXXX专门用于获取输出参数的方法
----------获取自增长值集合--------
//1.创建satement并在参数中返回自增长列
createStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
//执行
//2.获取自增长列集(可能多个),返回ResultSet对象
Statement.getGeneratedKeys();
-------------事务回滚------------
【手动提交】
// 一.手动提交事务,默认自动
connection.setAutoCommit(false);
【异常回滚】
connection.rollback();
【提交事务】
connection.commit();
【回滚到指定代码】
1)执行语句中设置point
savepoint = connection.setSavepoint();
2)回滚方法参数
connection.rollback(savepoint);
-----------连接池----------
【接口】连接池技术要实现的接口
javax.sql.DataSource
【实现】
1)DBCP
DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.Tomcat的数据源使用的就是DBCP。
2)c3p0
c3p0是一个开放源代码的JDBC连接池,
3)Druid
JDBC记录的更多相关文章
- spring jdbc 记录
@Repository("com.example.demo.dao.impl.SmpUserDaoImpl") public class SmpUserDaoImpl implem ...
- Servlet开发 中使用 log4jdbc 记录 hibernate 的 SQL信息
一.前言 使用log4jdbc在不改变原有代码的情况下,就可以收集执行的SQL文和JDBC执行情况. 平时开发使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺 ...
- MyBatis架构(转)
本文来自http://www.bubuko.com/infodetail-549184.html 如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处 ...
- MyBatis架构设计及源代码分析系列(一):MyBatis架构
如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处. 一.概述 MyBatis并不是一个完整的ORM框架,其官方首页是这么介绍自己 The MyBa ...
- 日志框架logj的使用
log4j 简介 是什么? Apache的一个开源的.轻量级的.用于日志管理的框架 有什么? Log4j由三个重要的组件构成:日志信息的输出格式,日志信息的优先 级,日志信息的输出目的地. 1,日志信 ...
- Spring学习记录(十四)---JDBC基本操作
先看一些定义: 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1.core即核心包,它包含了JDBC的核心功能.此包内有很多重要的类,包括:JdbcTemplate类.SimpleJ ...
- spring jdbc获取插入记录的主键id
在JDBC3.0规范中,当新增记录时,允许将数据库自动产生的主键值绑定到Statement或PreparedStatement中.使用Statement时,可以通过以下方法绑定主键值: int exe ...
- JMeter使用记录1 -- JDBC測试
场景:使用jmeter对web应用和mysql数据库进行压力測试 JMeter是一款很强大的測试工具.能够用来測试web,数据库.从07年用过之后一直对它情有独钟,以下记录下在一个项目中对它的简单使用 ...
- SSM 整合 quartz JDBC方式实现job动态增删改查记录
虽然网上有很多资料,但是都不够系统,本文记录下自己的整合过程. 1. 搭建一个SSM项目,此处略. 2. 按照quartz官方要求,建立quartz相关的数据库和表,相关sql语句如下: /* Nav ...
随机推荐
- SQLServer中的事物与锁
了解事务和锁 事务:保持逻辑数据一致性与可恢复性,必不可少的利器. 锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂,不能保证数据的安全正确读写. 死锁: ...
- php 扩展开发
Linux下用C开发PHP扩展 一.首先下载PHP源码包,假设源码包目录为:/software/php-5.2.13 #> cd /software/php-5.2.13/ext 二.假设我们要 ...
- ./run.sh --indir examples/demo/ --outdir examples/results/ --vis
(AlphaPose20180911) luo@luo-ThinkPad-W540:AlphaPose$ ./run.sh --indir examples/demo/ --outdir exampl ...
- 21. Date 函数
SQL 日期 当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配. 只要数据包含的只是日期部分,运行查询就不会出问题.但是,如果涉及时间,情况就有点复杂了. 在讨论 ...
- 6.AND & OR 运算符
AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤 AND 和 OR 运算符 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来. 如果第一个条件和第二个条件都成立,则 A ...
- xgboost dmatrix中的 weight的重要性
https://stackoverflow.com/questions/35983565/how-is-the-parameter-weight-dmatrix-used-in-the-gradien ...
- _AppStart.cshtml 和 _PageStart.cshtml的妙用
Customizing Site-Wide Behavior for ASP.NET Web Pages (Razor) Sites By Tom FitzMacken|February 17, 20 ...
- 关于IIS配置SimpleHandlerFactory-Integrated在其模块列表中有一个错误模块ManagedPipelineHandler的错误处理
解决方法: 使用管理员运行aspnet_regiis.exe 命令:%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i v ...
- Spring MVC Hibernate MySQL Integration(集成) CRUD Example Tutorial【摘】
Spring MVC Hibernate MySQL Integration(集成) CRUD Example Tutorial We learned how to integrate Spring ...
- TCP连接状态-如何判断一个TCP连接是否可用
在使用一个长连接的TCP时,如果TCP服务器端接收到TCP的客户端连接过来后,接着服务器端的TCP节点需要对这个客户端进行数据收发,收发时需要判断这个SOCKET是否可用用,判断方法有多种: 1.li ...