一、JDBC

什么是JDBC?
JAVA DataBase Connectivity (Java 数据库连接技术)
由Java编写的一组类和接口组成,为各种类型的数据库提供
统一的访问。
JDBC的作用?
一种将程序数据持久化到数据库的机制。
JDBC的组成?
1:JDBC API 主要做三件事:
与数据库建立连接/发送SQL语句/处理结果
2:JDBC Driver Manager 驱动程序管理器
3:JDBC驱动 不同的数据库需要不同的驱动,这些驱动都实现
了JDBC API中的各种接口。

JDBC访问数据库的步骤?
1:加载JDBC驱动
2:与数据库建立连接
3:发送SQL语句并得到返回的结果
4:处理返回结果
(Structured Query Language)

两种常用的驱动方式:
1:JDBC-ODBC桥连方式连接数据库
2:纯Java方式连接数据库
------------------------------
常见的连接数据库错误:
1、驱动名错误
2、数据连接字符串,数据库用户名,输错
3、数据库操作结束,没有关闭数据库连接,占用系统资源
4、关闭数据库连接的语句没放到finally语句中,可能不被执行

  1. (一)JDBC-ODBC连接数据库

1、在不需要ResultSet对象,Statement对象,Connection对象的时候,显示地关闭它们
public void close() throws SQLException
2、要按照,先ResultSet结果,后Statement,最后
Connectiond的顺序关闭资源。因为ResultSet是通过Statement执行SQL命令得到的,而Statement是需要在创建连接之后才可以
使用的。
3、用户如果不关闭ResultSet,当Statement关闭,重新执行或
用于多从结果序列中获得下一个结果时,该ResultSet将自动关闭

  1. (二)纯JAVA方式连接数据库

(三)常用的5个对象

Connection,DriverManager(略,见用例)

1、Statement常用方法

2、ResultSet常用方法

3、PreparedStatement的介绍

a : PreparedStatement接口继承自Statement接口:(优点):

1.提高了代码的可读和可维护性

2.提高了SQL语句的执行性能

3.提高了安全性( or '1'='1' 注入拼接攻击)

b : PreparedStatement接口的使用

使用PreparedStatement的execute(String sql)方法执行sql语句如果是查询的话返回true,如果是更新或插入的话就返回false所以执行插入或更新语句应该使用executeUpdate():

(1) 返回SQL 数据操作语言 (DML) 语句的行数

(2) 对于无返回内容的 SQL 语句,返回 0。

c : statement和preparedStatement的区别:

1.statement每次执行sql语句,相关数据库都要执行拼接sql语句的编译,preparedstatement是预编译的,代码可重用支持批处理。使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。

2: statement需要拼接sql语句,preparedstatement的sql语句可以用变量替换,达到代码重用的好处

3.安全性:传递给Statement的字符串参数会自动被驱动器忽略。传递给PreparedStatement对象的参数可以被强制进行类型转换,使开发人员可以确保在插入或查询数据时与底层的数据库格式匹配。

d : 使用PreparedStatement操作数据库的三步骤:

1.创建PreparedStatement对象

2.设置每个输入参数的值

3.执行SQL语句

PreparedStatement用例:

JDBC用例:

二、JDBC—DAO模式

什么是DAO?
1:Data Access Objects :数据存储对象:
2:DAO指位于业务逻辑和持久化数据之间实现对持久化数据的访
问,也就是将数据库操作都封装起来,对外提供相应的接口
3:[采用面向接口,有利于代码的,低耦合高类聚原则]
DAO的优势?
1:隔离业务逻辑代码和数据访问代码
2:隔离不同数据库实现
DAO的组成?
1:DAO接口 把对数据库的所有操作定义为抽象方法
2:DAO实现类 不同数据库给出的DAO接口定义方法的具体实现
3:实体类 用于存放和传输对象数据
4:数据库连接和关闭工具
避免了数据库连接和关闭代码的重复

JDBC—DAO的更多相关文章

  1. jdbc/DAO模式

    DAO设计模式: 1.DAO:      DAO设计模式是属于J2EE数据层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2.DAO各部分详解:DAO设计模式包括以下4个主要部分: ...

  2. jdbc之二:DAO模式

    详细代码请参见 https://code.csdn.net/jediael_lu/daopattern 1.创建Dao接口. package com.ljh.jasonnews.server.dao; ...

  3. JDBC通用DAO

    dbcBaseDao接口,内容如下: package com.sun4j.core.jdbc.dao; import java.io.Serializable; import java.util.Li ...

  4. jdbc之二:DAO模式 分类: B1_JAVA 2014-04-29 15:13 1536人阅读 评论(0) 收藏

    详细代码请参见 https://github.com/lujinhong/dao 一.前期准备 1.创建数据库 create database filter_conf; 2.创建表并插入数据 crea ...

  5. JDBC的增删改写成一个方法,调用一个工具类

    package com.hx.jdbc.connection; import java.sql.Connection; import java.sql.Statement; import com.my ...

  6. mysql的jdbc入门学习小结

    转自:专注JavaWeb开发 http://www.javaweb1024.com/data/MySQL/2015/04/25/618.html 一.jdbc基本概念jdbc : Java Datab ...

  7. Spring-JDBC通用Dao

    JdbcBaseDao JdbcBaseDao接口,内容如下: package com.sun4j.core.jdbc.dao; import java.io.Serializable; import ...

  8. spring对dao层的支持(datasource的作用)

    本文大多数内容转自“http://www.cnblogs.com/liunanjava/p/4412408.html”感谢原作者 在做一个项目时,持久层并没有使用spring jpa和hibernat ...

  9. JDBC第二次学习

    脑子太笨,必须得记录下来一些文字,方便回来查询. 这是我的第二次学习JDBC的笔记,看的是传智播客——李勇老师的JDBC系列,已看到第23集. 分析在实际项目中该如何应用JDBC 一个简单用户相关的数 ...

随机推荐

  1. php的form中元素name属性相同时的取值问题

    php的form中元素name属性相同时的取值问题:修改元素的名称,在名称后面加上 '[]',然后取值时即可得array()数组. 一.以复选框为例: <html> <head> ...

  2. ERROR: openstack Error finding address for http://10.16.37.215:9292/v1/images: [Errno 32] Broken pipe

    Try to set: no_proxy=10.16.37.215 this should help 转自: http://askubuntu.com/questions/575938/error-i ...

  3. Hadoop1.2.1 出现Warning: $HADOOP_HOME is deprecated.的解决方案

    通过启动或停止hadoop我们会发现会出现 “Warning: $HADOOP_HOME is deprecated” 这样一个警告,下面给出解决方案: 不过我们一般推荐第二种,因为我们还是需要$HA ...

  4. 阿里云CentOS6.8云服务器配置安全组规则

    前提:已经购买阿里云服务器,域名解析也完成了 需要对安全组规则进行配置,才能进行访问 1.进入阿里云首页https://www.aliyun.com/,如下图 2.进入控制台首页,如下图 3.在上图页 ...

  5. 第三篇:CUDA 标准编程模式

    前言 本文将介绍 CUDA 编程的基本模式,所有 CUDA 程序都基于此模式编写,即使是调用库,库的底层也是这个模式实现的. 模式描述 1. 定义需要在 device 端执行的核函数.( 函数声明前加 ...

  6. vue mixins的使用

    官网传送 刚开始接触vue的时候,官网关于mixins的例子看了好几遍,发现还是不会用,包括vuex也是后来慢慢理解一点的,不过和vuex比起来.mixns还是很好理解,简单很多了 就我目前理解mix ...

  7. 160229-02、Sublime Text 3 快捷键总结

    选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数 ...

  8. Android 5.0+删除Sdcard文件

    在Android5.0往后的平台上,你想通过单纯的调用File.delete()或着ContentResolver.delete()来删除Sdcard上的文件会删除失败.前者提示没有权限,后者仅仅删除 ...

  9. vscode中设置自动保存

  10. [iOS微博项目 - 3.6] - 获取未读消息

    github: https://github.com/hellovoidworld/HVWWeibo   A.获取登陆用户未读消息 1.需求 获取所有未读消息,包括新微博.私信.@.转发.关注等 把未 ...