JDBC/PreparedStatement
JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力
JDBC AP 是Sun公司提供的I
内容:供程序员调用的接口,集成在Java.sql和javax.sql包中,
如:
DriverManager类
Connection接口
Statement接口
ResultSet接口
DriverManager:是Sun公司提供
作用:管理各种不同的JDBC驱动
JDBC驱动:是数据库厂商提供
作用:负责连接各种不同数据库
Connection:负责连接数据库并且承担传送数据的任务
Statement:由Connection产生,负责执行SQL语句
ResultSet:负责保存Statement执行后产生的查询结果
使用Java方式连接数据库:
由JDBC驱动直接访问数据库
优点:100% Java,快又可跨平台
缺点:访问不同的数据库需要下载专用的JDBC驱动
JDBC访问数据库的步骤:
加载JDBC驱动
与数据库建立连接
创建Statement或preparedStatement对象
发送SQL语句,并得到返回结果
处理返回结果
释放资源
PreparedStatement:
使用statement安全性差,存在SQL注入
使用PreparedStatement接口:继承于Statement接口
比Statement更安全、稳定。
什么是持久化:把数据在瞬间状态和持久化间转换的机制。就数据存贮在硬盘就是叫持久化。就比如把大脑想到的记录的笔记本上一样,也是持久化。
DAO:Data Access Object(数据存取对象)
位于业务逻辑和持久化数据之间
实现对持久化数据的访问
DAO是起着转换器作用,把实体类型转换为数据库中记录。
DAO模式作用:隔离业务逻辑代码和数据访问代码
隔离不同数据库的实现
如图
DAO模式的组成部分:
DAO接口
DAO实现类
实体类
数据库连接和关闭工具类
定义一个接口PetDao
public interface(Pet pet);
int del(Pet pet);
上面的是实体类
定义PetDao 接口的实现类
public class PetDaoSQLServerpI mplements PetDao{
publi int save(Pet pet){。。。。。。。}
}
将数据库连接 的建立和关闭操作提取到一个专门的类BaseDao中,让PetDaoSQLServerlmpl类继承BaseDao类 -- 可以解决PetDaoSQLServerImpl类的各个方法中有数据库连接的建立和关闭操作,如何解决代码重复问题和更换了数据库,各个方法都要修改的问题
JDBC/PreparedStatement的更多相关文章
- Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement
Connection.prepareStatement()函数出错,提示: Type mismatch: cannot convert from java.sql.PreparedStatement ...
- 关于Mysql数据库longblob格式数据的插入com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V问题分析
当数据库字段为blob类型时 ,我们如果使用PreparedStatement中的setBinaryStream(int,InputStream,int)方法需要注意 在向blob字段类型中插入数据时 ...
- mysql数据库插入数据获取自增主键的三种方式(jdbc PreparedStatement方式、mybatis useGeneratedKeys方式、mybatis selectKey方式)
通常来说对于mysql数据库插入数据获取主键的方法是采用selectKey的方式,特别是当你持久层使用mybatis框架的时候. 本文除此之外介绍其它两种获取主键的方式. 为了方便描述我们先建一张my ...
- Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract 报错解决
java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract ----- ...
- JDBC PreparedStatement Statement
参考:预编译语句(Prepared Statements)介绍,以MySQL为例 1. 背景 本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相 ...
- 20160408javaweb之JDBC ---PreparedStatement
PreparedStatement 1.Sql注入:由于jdbc程序在执行的过程中sql语句在拼装时使用了由页面传入参数,如果用户恶意传入一些sql中的特殊关键字,会导致sql语句意义发生变化,这种攻 ...
- 关于JDBC PreparedStatement
PreparedStatement的执行步骤: 1. 向数据库服务器发送SQL语句,数据库对SQL进行解析和优化(conn.preparedStatement(sql)) 2. 向数据库发送绑定的参数 ...
- JavaEE JDBC PreparedStatement
PreparedStatement @author ixenos PreparedStatement工作原理 注意:虽然mysql不支持PreparedStatement优化,但依然有预编译的实现! ...
- JDBC——PreparedStatement执行SQL的对象
Statement的子接口,预编译SQL,动态SQL 功能比爹强大 用来解决SQL注入的 预编译SQL:参数使用?作为占位符,执行SQL的时候给?赋上值就可以了 使用步骤: 1.导入驱动jar包 复制 ...
随机推荐
- lua 基础 1
--1.1 Chunks--[[Chunk 是一系列语句,Lua 执行的每一块语句,比如一个文件或者交互模式下的每一行都是一个 Chunk.]] -- 1.2 全局变量--[[ 全局变量不需要声明,给 ...
- springmvc json字符串转化成json对象
问题出现在 :页面数据列表的展示出现 [object HTMLInputElement] 找到问题的所在原因后又三种解决方案 一:格式化json字符串为json对象字符串 success:functi ...
- javascript高级程序设计---第二、三章
在HTML中引用javaScript javascript的几个属性 type async(异步加载 只适用于外部JS且IE8以上 HTML5规范 先于load执行) src defer(延迟加载 ...
- easyui from 缓存问题处理
1 这是ie低版本,缓存了easyui form load事件获取的服务器端数据,给ajax时间加上清除缓存就ok. 找到easyui 中的form load事件 添加cache:false, /* ...
- 贪吃蛇,JavaScript,效果,鼠标事件
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>鼠 ...
- mysql 链接失败(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES))
mysql链接失败(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)) 修改: # ...
- WCF中的流
https://msdn.microsoft.com/zh-cn/library/ms733742.aspx
- RStudio中,出现中文乱码问题的解决方案
RStudio中,出现中文乱码问题的解决方案解决步骤:1.设置RStudio文本显示的默认编码:RStudio菜单栏的Tools -> Global Options2.选择General -&g ...
- Java 动态生成复杂 Word
Java 动态生成复杂 Word 阅读目录 1. 制作 Word 模版,将你需要动态生成的字段用${}替换.2. 将 Word文档保存为 xml .3. 引入项目. 项目中需要用 java 程序生成d ...
- 公钥私钥和RSA算法
1, RSA算法原理(一) http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html 2, RSA算法原理(二) http: ...