使用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执行, ...
随机推荐
- valgrind 代码检查,内存泄漏
使用平台 linux 下载 http://valgrind.org/ 文档 http://valgrind.org/docs/manual/manual.html 博客 https://www.osc ...
- MFC ListBox 设置水平长度
在*.rc资源 设置可以水平滚动, 垂直滚动 但是 水平滚动无效,水平方向 一直无法显示 完整 设置代码如下 m_listBox.SetHorizontalExtent(2000); m_listBo ...
- java递归demo---
递归思想: 递归就是方法里调用自身 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口 递归算法代码显得很简洁,但递归算法解题的运行效率较低.所以不提倡用递归设计程序. 在递归调用的过程中系 ...
- jq操作select集合
jq操作select集合 时间:2012年12月07日分类:Javascript 最近一段时间发现,老是要跟select,option相关的东西打交道,而且有的时候还会搞错,于是,抽了一点时间整理了一 ...
- 要把target下面虚拟路径的项目文件…
源码进不去,要检查target下面的项目文件,要删除掉. 版权声明:本文为博主原创文章,未经博主允许不得转载.
- 2、R-reshape2-melt
1.melt: 短数据转长数据 (1).融合的数据为数组.表以及矩阵,melt的表达式为: melt(data, varnames = names(dimnames(data)), . ...
- HDU - 4704 sum 大数取余+欧拉降幂
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submi ...
- The King’s Ups and Downs
有n个高矮不同的士兵,现在要将他们按高,矮依次排列,问有多少种情况. 化简为 n个人,求出可以形成波浪形状的方法数 #include <iostream> #include <cma ...
- 51nod1412(dp)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1412 代码: #include <bits/stdc+ ...
- 洛谷P4822 冻结
题目描述 "我要成为魔法少女!" "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于卡片之中„„" 在这个愿望被 ...