使用jdbc完成curd操作
jdbc:
java操作数据库,jdbc是oracle公司指定的一套规范(一套接口)
驱动:jdbc的实现类,由数据库厂商提供
我们可以通过一套规范操作不同的数据库(多态)
jdbc作用:
连接数据库
发送sql语句
处理结果集
jdbc操作步骤:
1.数据库和表
2.创建一个项目
3.导入驱动的jar包
4.编码:
注册驱动
获取连接
编写sql
创建预编译的语句执行者
设置参数
执行sql
处理结果
释放资源
初始化数据库和表:
CREATE DATABASE day07;
USE day07;
CREATE TABLE category(
cid varchar(20) PRIMARY KEY,
cname VARCHAR(20)
);
INSERT INTO category VALUES('c001','电器');
INSERT INTO category VALUES('c002','服饰');
INSERT INTO category VALUES('c003','化妆品');
INSERT INTO category VALUES('c004','书籍');
IDE,eclipse
1.修改字符集 utf——8
2.新建java项目
3.使用自己的jdk
使用junit单元测试
要求:
1.方法是public void xxx(){}
2.在方法上i添加@test
3.在@Test 按下 ctrl+1(快速锁定错误)
4.在方法上右键 run as -->junit 就可以执行方法了
jdbc-api详解:
所有的包 都是 java.sql 或者 java.sql
DriverManager:管理了一组jdbc的操作 类
常用方法:
了解:注册驱动
static void registerDriver(Driver driver)
通过查看 com.mysql.jdbc.Driver的源码 如 下
static{
try{
java.sql.DriverManager.registerDriver(new Driver());//这段代码写过
}catch (SQLException E){
throw new RuntimeException("Can't register driver!");
}
}
驱动注册了两次,我们只需要将静态代码块执行一次,类被加载到内存中会执行静态代码块,并且只执行一次。
现在只需要将类加载到内存中即可
方式一:
Class.forName("全限定名");//包名+类名 com.mysql.jdbc.Driver
方式二:
类名.class;
方式三:
对象.getClass();
掌握:获取连接
static connection getConnection(String url,String user,String password)
参数1:告诉我们连接什么类型的数据库及连接哪个数据库
协议:数据库类型:子协议 参数
mysql: jdbc:mysql://localhost:3306/数据库名称
oracle:jdbc:oracle:thin@localhost:1521@实例
参数2:账户名
参数3:密码
Connection :连接 接口
常用方法:
获取语句执行者:
statement createStatement(): 获取普通语句执行者 不安全SQL注入
★preparedStatement prepareStatement(String sql) :获取预编译语句执行者
CallableStatement prepareCall(String sql ):获取调用存储过程的语句执行者
了解:
setAutoCommit(flase):手动开启事物
commit():提交事务
rollback():事务回滚
statement:语句执行者 接口
preparedStatement:预编译语句执行者 接口
常用方法:
设置参数:setXXX(int 第几个问号, Object 实际参数);
eg:
setInt,setString,setObject
执行sql:
ResultSet executeQuery(): 执行r语句 返回值:结果集
int executeUpdate():执行cud语句 返回值:影响的行数
ResultSet:结果集 接口
执行查询语句之后返回的结果集
常用方法:
boolean next():判断是否有下一跳记录,若有返回true且将光标移到下一行,若没有返回false
光标一开始处于第一行第一条记录上
获取具体内容
getXxx(int|String)
若参数为int:第几列
若参数为string:列名(字段名)
例如:
获取cname的内容可以通过
getString(2)
getString("cname")
常用方法:
getInt
getString 也可以获取int值
getObject 也可以获取任意值
/////////////////////////
常见的配置文件格式:
1.properties
里面内容的格式 key=value
2.xml
//////////////////////////
若我们的配置文件properties,并且防砸isrc目录下
我们可以通过 ResourceBundle工具类快速获取里面的配置信息
使用步骤:
1.获取ResourceBundle 对象:
static ResourceBundle getBundle("文件名称不带后缀名")
2.通过ResourceBundle 对象获取配置信息
String getString(String key):通过执行key获取制定的value
//////////
案例2-通过连接池(数据源)优化我们的操作
需求:
使用jdbc的时候,每操作一次需要获取连接,用完后把连接释放掉,通过连接池来优化curd操作。
技术分析:
连接池
/////////////////////////
连接池概述:
管理数据库的连接,
作用:
提高项目的性能。
就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接
所有的链接池必须实现一个接口 javax.sql.DataSource接口
获取连接的方法:
Connection getConnection()
归还连接的方法就是以前释放资源的方法
自定义一个连接池(理解思想)
常用连接池:
DBCP
C3P0
///////////////
增强方法
1.继承
2.装饰者模式(静态代理)
3.动态代理
///////////////////////////
装饰者模式:
使用步骤:
1.装饰者和被装饰者要实现同一个接口或者继承同一个类
2.装饰者中要有被装饰者的引用
3.对需要增强的方法进行加强
4.对不需要加强的方法调用原方法
///////////////////
常见连接池:
dbcp:
c3p0:★
配置文件:
名称:c3p0.properties或者 c3p0-config.xml
位置:src下
使用:
new ComboPooledDataSource()
////////////////
dbutils:
工具类,封装了jdbc的操作.
使用步骤:
1.导入jar包
2.创建queryrunner类
3.编写sql
4.执行sql
queryrunner:操作sql语句
构造器:
new queryrunner()
方法:
query(..)
update(..)
ResultSetHandler:封装结果集
BeanHandler
BeanListHandler
MapListHandler
ScalarHandler
使用jdbc完成curd操作的更多相关文章
- 通过jdbc完成单表的curd操作以及对JDBCUtils的封装
概述:jdbc是oracle公司制定的一套规范(一套接口),驱动是jdbc的实现类,由数据库厂商提供.所以我们可以通过一套规范实现对不同的数据库操作(多态) jdbc的作用:连接数据库,发送sql语句 ...
- Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作
1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...
- MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)
回到目录 我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋 ...
- Laravel框架数据库CURD操作、连贯操作使用方法
Laravel框架数据库CURD操作.连贯如何来操作了这个操作性是非常的方便简单了我们在这里来为各位介绍一篇相关的教程,具体的细节步骤如下文介绍. Laravel是一套简洁.优雅的PHP Web开 ...
- php对xml文件进行CURD操作
XML是一种数据存储.交换.表达的标准: - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系): - 交换:可以通过schema实现异构数据集成: ...
- MongoDB的安装及CURD操作
MongoDB的下载地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit两个版本,32bit只能存放2GB数据.我们选择64bit版进行下载. ...
- LINQ-to-SQL那点事~利用反射在LINQ-to-SQL环境中实现Ado.net的CURD操作
回到目录 对于linq to sql提供的CURD操作,给我们的感觉就是简单,容易使用,更加面向对象,不用拼SQL语句了,这些好处都表示在处理单条实体或者集合长度小的情况下,如果有一个1000条的集合 ...
- Laravel框架数据库CURD操作、连贯操作
这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 $users = DB::t ...
- 一个简单的ORM制作(CURD操作类)
SQL执行类 CURD操作类 其他酱油类 此篇是为上篇文章填坑的,不知道上篇砸过来的砖头够不够,不够的话请大家继续砸. CURD操作类负责将用户提供的条件转换为SQL语句,并提供给IHelper执行, ...
随机推荐
- 记一次keepalived脑裂问题查找
在自己环境做keepalived+Redis实验时,当重启了备用redies机器后,发现两台redies主机都拿到了VIP [root@redis2 ~]# ip addr list 1: lo: & ...
- SQL 优化总结(三) SQL子句
SQL子句 尽可能编写优化器可以优化的语句. 1. SELECT子句 (1) 在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了 ...
- 利用正则表达式类解析SQL语句,达到Worklist兼容各个RIS数据库的目的
在做RIS的项目中遇到一个问题, 因为Worklist要兼容各个RIS数据库, 因此设计了目前这个架构. 1.xml文件来配置RIS数据库的数据源, 2.xml文件来存储关于查询/更新数据库的SQL语 ...
- kindle 3 webbrowser破解,
首先下载破解: http://183.60.157.10/down_group83/M00/06/31/tzydCk3MyHYAAAAAAUTLHFYI-wk8562757/webpatch.7z?k ...
- lwip【4】 lwIP配置文件opt.h和lwipopts.h初步分析之一
在这里先说一下这两个配置lwip协议栈文件opt.h和lwipopts.h的关系: opt.h是lwip"出厂"时原装的配置文件,它的作者是瑞士科学院的Adam等 ...
- Ubuntu 12.04 Eclipse设…
Ubuntu 12.04 Eclipse设置(黑色背景解决) 分类: ubuntu2012-11-21 10:47 252人阅读 评论(0) 收藏 举报 eclipseEclipseubuntuUbu ...
- 利用mysql客户端查询UCSC数据库
UCSC Genome Browser是由University of California Santa Cruz (UCSC) 创立和维护的,该站点包含有人类.小鼠和大鼠等多个物种的基因组草图和注释信 ...
- 面试问题 - C# 接口和抽象类的区别
这个问题基本上可以说是 面试时的必问问题 C# 中的接口和抽象类 相同点: 1. 都不能直接实例化,都可以通过继承实现其抽象方法 2. 都是面向抽象编程的技术基础,实现了诸多的设计模式 不同点: 1. ...
- 使用makefile编译多个文件(.c , .cpp , .h等)
有时候我们要一次运行多个文件,这时候我们可以使用Makefile!!! ◊make是什么? make是一个命令工具,是一个解释makefile中指令的命令工具.它可以简化编译过程里面所下达的指令,当执 ...
- 洛谷P1868 饥饿的奶牛
P1868 饥饿的奶牛 题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧草.你 ...