1、jdbc是什么?
java database connectivity
sun公司制订的一种通用的数据库访问接口,
该接口由不同的数据库厂商来实现,这样一来,
开发人员可以使用相同的方式来访问不同的数据库。
2、三个重要的接口
1)Connection
2)Statement
3)ResultSet
3、编程步骤
step1, 加载驱动
1)什么是驱动?
由不同的数据库厂商实现jdbc接口对应的
java类压缩之后生成的.jar文件。
也就是说,访问某个数据库,就必须使用
该数据库对应的驱动。
2)驱动要放到build path对应的路径里面。
3)代码:
Class.forName(String classname);
forname方法:jvm依据classname找到
类的字节码文件(.class文件),然后将字节
码文件的内容读到方法区,生成一个
class对象。
step2, 获得连接
Connection conn = DriverManager.
getConnection(String url,String username,
String pwd);
注意:
1)getConnection方法会返回一个符合Connection
接口要求的对象,称之为连接对象。
2)如果连接对象获得了,则表示连接已经建立
成功。
step3,创建Statement
Statement stat = conn.createStatement();
注意:
1) createStatement()方法会返回一个
符合Statement接口要求的对象,该对象
可以理解为一个执行sql的容器。
step4,执行sql
//执行查询
ResultSet rst = stat.executeQuery(String sql);
//执行插入、删除、修改
int stat.executeUpdate(String sql);
注意:
1)executeUpdate方法返回值是一个整数,
表示该sql执行成功之后,受到影响的记录的
个数。
2)executeQuery方法返回的是一个
ResultSet(结果集),需要遍历。
step5, 如果是查询,需要遍历
ResultSet有一个next()方法,每执行一次
该方法,会返回一个true/false,如果值为true,
表示还有记录。
while(rst.next()){
rst.get***方法(比如 getString("name"))
}
step6, 关闭资源
rst.close()
stat.close()
conn.close()
4、mysql的使用
1)登录mysql (以root用户登录mysql)
mysql -uroot;
2)查看当前有哪些数据库
show databases;
3)创建一个新的数据库
//创建了一个名叫jsd1306db的数据库,
//并且设置缺省的字符集为utf8
create database jsd1306db default
character set utf8;
4) 使用某个数据库
use jsd1306db;
5) 查看当前数据库有哪些表
show tables;
6)建表
create table t_user(
id int primary key auto_increment,
username varchar(50),
pwd varchar(30),
age int
)type=innodb;
insert into t_user(username,pwd,age)
values('tom','test',22);
insert into t_user(username,pwd,age)
values('mickey','test',23);
insert into t_user(username,pwd,age)
values('jerry','test',24);
如果是oracle数据库
insert into t_user
values(t_user_seq.nextval,'tom','test',22);
注意:
a, type=innodb: 让该表支持事务。
b, auto_increment: 自增长列,即
由数据库自动为这个列赋值(当插入
记录时,数据库会生成一个唯一的值)。
练习:
使用jdbc访问oracle数据库上的一张表
(t_user表),输出该表中所有的记录。
5、sql注入(了解)
所谓"sql注入",指的是一些用户可以通过输入一些
刻意构造的参数来改变sql语句的结构,从而达到
破坏系统的目的。比如,非法登录。
6、PreparedStatement接口 (预编译的Statement)
预编译的Statement有两个优点:
优点1: 防止sql注入,因为sql语句会在执行之前
先发送给数据库,数据库会生成执行计划。这个
sql语句不会因为后面给参数赋值而改变。
优点2: 执行多个结构相同的sql效率要高于
Statement。
1、DAO(Data access object 数据访问对象)
(1)什么是DAO
封装了数据访问逻辑的模块。
(2)如何写一个DAO?
step1, 写一个实体类
实体类与表对应,是为了方便实现对表中的记录
进行访问而设计的一个简单的java类。
step2, 写一个DAO类,在该类里面,
提供相应的数据访问方法。
2、如何控制事务
(1)什么是事务?
将多个操作当做一个原子操作来进行,要么
全部成功,要么全部失败。
(2)事务的四个特性
a, 原子性:多个操作要当做一个整体来进行,要么
全部成功,要么全部失败。
b,一致性:事务不管成功还是失败,不应该破坏
完整性约束(比如,主键不能为空)。
c,隔离性:多个并发的事务不应该相互影响。
d,持久性:事务成功之后,结果应该永久保存。
(3)jdbc当中,如何控制事务。
//禁止自动提交
//默认情况下,jdbc驱动会自动提交事务。
conn.setAutoCommit(false);
//提交事务
conn.commit();
//回滚事务
conn.rollback();
3、批处理
(1)什么是批处理?
将多个要执行的sql语句一次性地发送给数据库去执行。
(2)如何批处理?
addBatch(): 将要执行的参数添加到PreparedStatement
对象上。
executeBatch(): 将PreparedStatement对象上保存的
参数发送到数据库,然后一次性地执行多条sql语句。
clearBatch(): 清空PreparedStatement对象上保存的
参数。
1、事务的封装
"买股票"
step1, 建表
create table t_account(
id int primary key auto_increment,
accountNo varchar(16) unique,
balance int
)type=innodb;
create table t_stock(
id int primary key auto_increment,
stockCode varchar(6) unique,
qty int
)type=innodb;
insert into t_account(accountNo,balance)
values('6225881003192000',1000);
insert into t_stock(stockCode,qty)
values('600015',0);
unique:唯一性约束
step2, 实体类
Account类
Stock类
step3,DAO
AccountDAO
StockDAO
step4, StockService
1)事务应该由业务类来控制
比如,买股票涉及到对资金帐户和股票帐户的操作
(AccountDAO和StockDAO),那么,事务应该由
业务类StockService来控制。
2) Threadlocal (线程局部变量)
a, Threadlocal是什么
为每一个使用某个变量的线程维护一个
该变量值的副本。
b, 什么时候使用Threadlocal
如果一个线程调用了多个方法,要在多个方法
之间共享相同的数据,可以考虑使用Threadlocal。
比如:买股票这个案例当中,一个线程
需要调用AccountDAO,StockDAO的多个方法,
为了控制事务,需要这些方法共享同一个Connection
对象。
2、分页
(1)什么是分页
就是依据两个参数(每页多少条记录,
第几页)查询数据库,返回有限的记录。
(2)为什么要分页
如果不分页,当数据库中的记录很多,
那么一次性地查询所有记录,会严重
影响系统的性能。
(3)如何分页?
mysql:
select * from t_user limit ?,?
其中,第一个参数表示记录的序号(从0开始)
第二个参数表示每页多少条记录。
oracle:
select * from
(select a.*,rownum rn
from
(select * from t_user) a
where rownum < ?)
where rn > ?
public List<User> findAll2(int rowsPerPages,
int pages);
int start = rowsPerPages * (pages - 1) + 1;
int end = start + rowsPerPages;
prep.setInt(1, end);
prep.setInt(2,start);
prep.executeQuery();
1、xml是什么 (可扩展的标记语言)
(1)是一种基于文本的通用的数据保存格式
a,通用
使用xml格式保存的数据,是与平台无关的。
也就是说,所有的语言都支持xml。
比如,我们可以使用java语言将一个对象(
Point)保存到一个xml文件里面,另外一个用
c语言写的程序,可以很方便地读取这个xml文件。
b,数据保存格式
xml使用标记加内容的方式来保存数据。
比如:
<point>
<x>10</x>
<y>20</y>
</point>
(2)发展历史
html (超文本标记语言)。
xml使用了html的基本语法,但是,更严格,并
且可扩展,使用范围也更广泛。
xhtml: 对html按照xml语法来加以约束。
2、xml的基本语法
1)元素
a,什么是元素?
标记和标记之间的内容,统称为元素。
b,一个xml文档,只有一个根元素。
c,元素可以嵌套
d,元素必须有开始标记和结束标记,如果是空
元素,可以简写为 <标记/>。
比如:
<a></a> 是一个空元素,可以简化为<a/>
e,元素可以有属性
比如:
<point type="normal">
</point>
2)属性
a,属性用来表示元素的特性
b,属性值必须用引号括起来。
c,属性必须写在开始标记里面。
3)实体
a,什么是实体
有一些特殊的字符,比如 <, >, &, ', ",
对xml解析器有特殊的含义,需要使用相应的
字符来代替,这些用来代替的字符称之为实体。
比如,使用 < 来代替 <。
比如:
<question>
1+2<3?
</question>
解析器会认为 "<"号是一个开始标记,因为没有
">"结束,会解析出错。
正确的写法:
<question>
1+2 < 3?
</question>
b,常见的实体
< <
> >
& &
' '
" "
4) CDATA段
<![CDATA[ 不需要解析器解析的内容 ]]>
5) xml大小写敏感
建议,标记用小写;另外,如果一个标记有
多个单词,建议使用"-"连接。
比如: <cust-name>
3、xml解析
1) 主要的解析方式
a, sax: sun公司提供的一套相对比较底层的用来
解析xml的api。一般作为其它的一些解析工具的
底层的解析方式。sax解析的优点是需要的系统资源
非常少。但是编程比较麻烦。
b,dom: dom解析需要将整个xml文档读入到内存,
对系统资源的占用比较大。编程也比较麻烦。
c,一些开源的工具 : DOM4J,Digest,pull等等。
这些开源的工具编程相对sax,dom要更方便。
2)如何将一个java对象转换成一个xml文档
step1,将dom4j的jar文件加到build path。
step2, 先设计好xml文档的结构
一般来说,一个java类对应一个元素。
简单的类型,比如string,既可以作为属性,也
可以作为子元素来设计。复杂类型只能作为子元素
来设计。
3)如何将一个xml文档转换成一个java对象
4、dtd
5、xpath
相关推荐
简单说一下你对jdbc的理解?.avi
- 什么是JDBC批处理,何时应该使用它? - 如何处理JDBC连接池,比如C3P0、Apache DBCP或HikariCP? 4. **JSP面试题**: - JSP的基本语法,如声明、脚本元素、指令元素。 - JSP和Servlet的关系是什么?何时使用...
JDBC是什么?** JDBC全称为Java Database Connectivity,是一种用于执行SQL语句的标准Java API,它定义了用来访问数据库的一套标准Java接口。这些接口提供了数据库独立性和可移植性,使得开发者能够编写一次代码,...
SQLJDBC和SQLJDBC4是Microsoft为Java应用程序提供的用于连接SQL Server数据库的驱动程序。这两个版本都是JDBC(Java Database Connectivity)驱动,允许Java开发者在应用程序中与SQL Server进行交互。下面将详细介绍...
这里我们关注的是SQL Server 2000数据库,以及它的JDBC(Java Database Connectivity)驱动,具体是`sqljdbc4.jar`和`sqljdbc.jar`。这两个文件是Java应用程序连接到SQL Server 2000的桥梁,它们允许Java代码通过...
《深入理解JDBC Driver 3.0:聚焦SQL Server JDBC》 在IT行业中,数据库连接是应用程序与数据存储之间的桥梁,而JDBC(Java Database Connectivity)则是Java平台中用于访问数据库的标准API。JDBC Driver 3.0是针对...
Spring Data JDBC与JDBC是两种不同的数据库访问方式,它们在Java开发中有着广泛的应用。JDBC(Java Database Connectivity)是Java平台的标准API,用于与各种数据库进行交互。它提供了低级别的数据库操作,如建立...
标题中的"sqljdbc4.jar, sqljdbc41.jar, sqljdbc42.jar"是指Microsoft SQL Server为Java应用程序提供的Java Database Connectivity (JDBC)驱动程序。这些JAR文件是数据库连接的关键,允许Java代码与SQL Server进行...
JDBC(Java Database Connectivity)是Java平台中的一个标准API,用于与各种数据库进行交互。Apache Camel 的 JDBC 组件就是将这两个强大的工具结合在一起,使开发者能够方便地在Camel路由中执行SQL查询和操作数据库...
JDBC可以做什么? JDBC可以连接数据库、发送SQL语句、处理结果集等。它使得Java程序可以与数据库进行交互,从而实现数据的读取、写入、更新和删除等操作。 JDBC API的分类 JDBC API可以分为两类:应用程序开发...
mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上...
SQL Server 2005 JDBC 驱动与SQL Server 2000 JDBC 驱动是Java应用程序连接Microsoft SQL Server数据库的重要组件。JDBC(Java Database Connectivity)是Java平台的标准接口,允许Java程序与各种数据库进行交互。在...
在Java编程语言中,JDBC(Java Database Connectivity)是一个核心的API,用于连接Java应用程序与各种类型的数据库。这里我们关注的是两个特定版本的Microsoft SQL Server的JDBC驱动:sqljdbc41.jar和sqljdbc42.jar...
jdbc调用存储过程?.avi
JDBC(Java DataBase Connectivity)是Java与数据库的接口规范 JDBC定义了一个支持标准SQL功能的通用低层的应用程序编程接口(API) 定义了若干Java中的类,表示数据库连接、SQL指令、结果集、数据库元数据等
Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种关系数据库进行交互的一组接口和类。它作为标准API,允许开发人员通过编写Java代码来访问和操作数据库,无需了解数据库特定的SQL语法或者驱动...