使用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执行, ...
随机推荐
- js取得数组重复元素
function duplicates(arr) { var result=[]; arr.sort();//进行排序,重复的都相邻了 ;i<arr.length;i++){ ]&&am ...
- 【237】◀▶IEW-Unit02
Unit 2 Sport I.状语从句在雅思写作中的运用 公式: 主句+状语从句连接词+从句 =状语从句连接词+从句,主句 1. 时间状语从句 I. when, while, as 1. When+A ...
- TextBox控件TextMode="Password"時
TextBox控件TextMode="Password"時,觸發服務器端事件后,會清空掉TextBox的顯示值 2008-07-15 15:06:10| 分类: C#.NET 空 ...
- HDU - 6113 2017百度之星初赛A 度度熊的01世界
度度熊的01世界 Accepts: 967 Submissions: 3064 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 327 ...
- cf808E(三分)
题目链接:http://codeforces.com/problemset/problem/808/E 题意:给出n个体积为wi, 价值为ci的物品,背包容量为m,求能容纳的最大物品价值,其中 1&l ...
- uoj#340. 【清华集训2017】小 Y 和恐怖的奴隶主(矩阵加速)
传送门 uoj上的数据太毒了--也可能是我人傻常数大的缘故-- 三种血量的奴隶主加起来不超过\(8\)个,可以枚举每种血量的奴隶主个数,那么总的状态数只有\(165\)种,设\(dp_{t,i,j,k ...
- React入门看这篇就够了
摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所有. React 背景介绍 React 入门实例教程 React 起源于 ...
- 浅谈css常用伪类用法
着重写一下after和before的用法: css样式搞定:标签元素+伪类after a.'class名':after{//我的样式名称是这个,可以写成你自己的样式名称 content: '已打包'; ...
- 笔记-JavaWeb学习之旅15
Filter:过滤器 概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 package com.d ...
- Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表. ---查询语句创建表 create table emp a ...