什么是JDBC
 JDBC(Java Data Base Connectivity,Java数据库连接),是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问。它由一组用Java语言编写的类和接口组成。

JDBC API
 提供者:Sun公司
 内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如
DriverManager类 作用:管理各种不同的JDBC驱动
- Connection接口
- Statement接口
- ResultSet接口
JDBC驱动
提供者:数据库厂商
作用:负责连接各种不同的数据库
JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。

三方关系
SUN公司是规范制定者,制定了规范JDBC(连接数据库规范)
数据库厂商微软、甲骨文等分别提供实现JDBC接口的驱动jar包
程序员学习JDBC规范来应用这些jar包里的类。

JDBC连接数据库最简单的方式
一:拿到jar包,【这里是用Oracle进行了连接测试】
jar包位置:Oracle的安装的路径下去找或者直接百度对应的版本jar包即可。

二:导入jar包到Java项目里

导入jar包截图步骤:

三、写代码:【6步骤】
// 1.加载一个driver驱动
Class.forName("oracle.jdbc.OracleDriver");

// 2.创建数据库连接(Connection)
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "scott", "tiger");
// 3.创建SQL命令发送器Statement--由连接connection来创建sql命令发送器
Statement statement = connection.createStatement();
// 4.通过Statement发送SQL命令并得到结果(测试添加数据)
String sql = "insert into emp values(1007,'zhangsan','student',7788,'09-10月-2018',5000,3000,10)";
// 5.处理结果--返回int 底层直接实现了commit
int commit =statement.executeUpdate(sql);
//6.关闭数据库资源--先开的资源后关
statement.close();
connection.close();
详细代码:

 package boom;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; /**Oracle连接JDBC
* 1.导入jar包
* 2.写jdbc
* @author Administrator
*
*/
public class JDBC_test01 { public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 1.加载一个driver驱动
Class.forName("oracle.jdbc.OracleDriver");
// 2.创建数据库连接(Connection)
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "scott", "tiger");
// 3.创建SQL命令发送器Statement--由连接connection来创建sql命令发送器
Statement statement = connection.createStatement();
// 4.通过Statement发送SQL命令并得到结果(测试添加数据)
String sql = "insert into emp values(1007,'zhangsan','student',7788,'09-10月-2018',5000,3000,10)";
// 5.处理结果--返回int 底层直接实现了commit
int commit =statement.executeUpdate(sql);
// 判断
if(commit>0){
System.out.println("JDBC_test01.main(测试添加数据成功)");
}else{
System.out.println("JDBC_test01.main(测试添加数据失败)");
}
// 6.关闭数据库资源--先开的资源后关
statement.close();
connection.close();
} }

测试结果:

小结:
JDBC访问数据库步骤
1:加载一个Driver驱动
2:创建数据库连接(Connection)
3:创建SQL命令发送器Statement
4:通过Statement发送SQL命令并得到结果
5:处理结果(select语句)
6:关闭数据库资源
JDBC语法小结:
1.加载驱动
加载JDBC驱动是通过调用方法java.lang.Class.forName(),下面列出常用的几种数据库驱动程序加载语句的形式 : 
Class.forName(“oracle.JDBC.driver.OracleDriver”);//使用Oracle的JDBC驱动程序 
Class.forName(“com.microsoft.JDBC.sqlserver.SQLServerDriver”);//使用SQL Server的JDBC驱动程序 
Class.forName(“com.ibm.db2.JDBC.app.DB2Driver”);//使用DB2的JDBC驱动程序 
Class.forName("com.mysql.JDBC.Driver");//使用MySql的JDBC驱动程序
2.创建数据库连接
与数据库建立连接的方法是调用DriverManager.getConnection(String url, String user, String password )方法
String url="jdbc:oracle:thin:@localhost:1521:XE";
String user=“scott";
String password=“tiger";
3.创建Statement并发送命令
Statement对象用于将 SQL 语句发送到数据库中,或者理解为执行sql语句
有三种 Statement对象:
 Statement:用于执行不带参数的简单SQL语句;
 PreparedStatement(从 Statement 继承):用于执行带或不带参数的预编译SQL语句;
 CallableStatement(从PreparedStatement 继承):用于执行数据库存储过程的调用。

完善JDBC代码,达到规范的写法,实现增删改查操作:【遵循六大步骤】
1:驱动名,URL,用户名,密码提取到代码的前面
2:处理抓取异常信息
3:实现JDBC对数据库的增删改操作
获取当前日期封装成了util类:

public class MyUtil {
/**
* 获取当前的系统日期,字符串类型
* @return newdatestr
*/
public static String GetSysTime(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String newdatestr = sdf.format(new Date());
return newdatestr;
}
}

详细代码:

 package boom;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; import boom.util.MyUtil;
import oracle.net.aso.s; /**Oracle连接JDBC
* 提取:驱动名,URL,用户名,密码
* 处理异常信息
* 实现建增删改
* @author Administrator
*
*/
public class JDBC_test02 { public static void main(String[] args){
// 声明参数
String driver="oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName="scott";
String userPwd="tiger"; // 声明连接,初始化为空
Connection connection = null;
Statement statement = null; try {
// 1.加载驱动
Class.forName(driver);
// 2.创建连接
connection = DriverManager.getConnection(url, userName, userPwd);
// 3.创建SQL命令发送器
statement = connection.createStatement();
// 4.发送SQL获取结果
// 添加
String add = "insert into emp values(9999,'李四','MANAGER',7788,to_date('"+MyUtil.GetSysTime()+"','yyyy-mm-dd'),9000,1000,10)";
// 删除
String delete = "delete from emp where empno=9999";
// 修改
String update = "update emp set sal=sal+8000,comm=comm+520 where empno=9999"; // 相当于事务的提交更新commit
int commit = statement.executeUpdate(delete);
// 5.处理结果
if(commit>0){
System.out.println("JDBC_test02.main(测试数据成功)");
}else{
System.out.println("JDBC_test02.main(测试数据失败)");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
// 6.关闭资源 【先开后关】
try {
if(statement !=null){
statement.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(connection !=null){
connection.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }

JDBC对Oracle进行查询操作

 package boom;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date; import boom.util.MyUtil;
import oracle.net.aso.s; /**
* 查询
* @author Administrator
*
*/
public class JDBC_test03 { public static void main(String[] args){
// 声明参数
String driver="oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName="scott";
String userPwd="tiger"; // 声明连接,初始化为空
Connection connection = null;
Statement statement = null;
ResultSet result = null; try {
// 1.加载驱动
Class.forName(driver);
// 2.创建连接
connection = DriverManager.getConnection(url, userName, userPwd);
// 3.创建SQL命令发送器
statement = connection.createStatement();
// 4.发送SQL获取结果
// 查询
String select = "select * from emp where comm is not null order by sal desc";
result = statement.executeQuery(select);
// 5.处理结果-遍历结果集需要用到while
while(result.next()){
// 遍历循环表字段
int empno = result.getInt("EMPNO");
String ename = result.getString("ENAME");
String job = result.getString("JOB");
int mgr = result.getInt("MGR");
Date hiredate = result.getDate("HIREDATE");
double sal = result.getDouble("SAL");
double comm = result.getDouble("COMM");
int deptno = result.getInt("DEPTNO");
//输出
System.out.println(empno+"\t"+ename+"\t"+job+"\t"+mgr+"\t"+hiredate+"\t"+sal+"\t"+comm+"\t"+deptno);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
// 6.关闭资源 【先开后关】
try {
if(result!=null){
result.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(statement !=null){
statement.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(connection !=null){
connection.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }

效果图为查询有奖金的员工所有信息

逆序查询:
关闭结果集正序遍历并设置只读
 statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

// 把结果集的指针移到最后
result.afterLast();
// 遍历结果集向上遍历
result.previous()
详细代码:

 package boom;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @author 查询--逆向遍历
*
*/
public class JDBC_test04 {
public static void main(String[] args) {
// 声明参数
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String username = "scott";
String userpwd = "tiger"; // 声明连接
Connection connection = null;
Statement statement = null;
ResultSet result = null;
try {
// 1:加载驱动
Class.forName(driver);
// 2:创建连接
connection = DriverManager.getConnection(url, username, userpwd);
// 3:创建sql命令发送器
statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
// 4:发送sql获取结果
// 查询
String select = "select empno,ename,job from emp where sal>=2000 order by ename";
result = statement.executeQuery(select);
// 把结果集的指针移到最后
result.afterLast(); // 5:处理结果-遍历结果集需要用到while
// 遍历结果集向上遍历
while(result.previous()){
// 遍历循环表字段
int empno = result.getInt("EMPNO");
String ename = result.getString("ENAME");
String job = result.getString("JOB");
//输出
System.out.println(empno+"\t"+ename+"\t"+job+"\t");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭资源--先开后关
try {
if (result != null) {
result.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} try {
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
}

效果图是按姓名逆序输出

Oracle里是升序:select empno,ename,job from emp where sal>=2000 order by ename

JDBC概述及JDBC完成对Oracle的增删改查的更多相关文章

  1. mvc模式jsp+servel+jdbc oracle基本增删改查demo

    mvc模式jsp+servel+jdbc oracle基本增删改查demo 下载地址

  2. mvc模式jsp+servel+dbutils oracle基本增删改查demo

    mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址

  3. web项目总结——通过jsp+servlet实现对oracle的增删改查功能

    1.DAO模式 分包:依次建立 entity:实体包,放的是跟oracle数据库中表结构相对应的对象的属性,也就是这个对象有什么 dao:增删改查接口,实现增删改查的具体方法 service:同dao ...

  4. ASP.NET C# 连接 Oracle数据库增删改查,事务

    一.知识介绍 ①ASP.NET 使用的是MVC模式,开发工具Visual studio ,语言C# ②Oracle是比较重型的数据库,这里主要介绍连接数据库,对数据进行具体的使用 ③Visual St ...

  5. Java学习笔记——JDBC之与数据库MySQL的连接以及增删改查等操作

    必须的准备工作 一.MySQL的安装.可以参考博文: http://blog.csdn.net/jueblog/article/details/9499245 二.下载 jdbc 驱动.可以从在官网上 ...

  6. JDBC 笔记3 通过PreparedStatement 对数据库进行增删改查 (转载)

    之前MVC时一直用它,学了框架后就没怎么用了.这里转载一位同学的博客,以后可能也会用到的. 转自:https://www.cnblogs.com/zilong882008/archive/2011/1 ...

  7. 【转】mybatis连接Oracle做增删改查

    原文地址:http://blog.csdn.net/liumengcheng/article/details/34422475 入门请看http://blog.csdn.NET/liumengchen ...

  8. Mybatis连接Oracle实现增删改查实践

    1. 首先要在项目中增加Mybatis和Oracle的Jar文件 这里我使用的版本为ojdbc7 Mybatis版本为:3.2.4 2. 在Oracle中创建User表 create table T_ ...

  9. java 连接oracle 进行增删改查

    1.在DAO层新增类OraclePersionDao package com.test.dao; import java.sql.*; /** * Created by wdw on 2017/9/1 ...

随机推荐

  1. 树莓派上安装Samba实现树莓派与Windows间的文件共享

    我是参考这篇文章的: https://www.jianshu.com/p/ead92b06318e 安装samba和common-bin库(具有smbpasswd效用) sudo apt-get in ...

  2. 20190521 - macOS 中显示隐藏文件的快捷键

    macOS 中显示隐藏文件,以前总是借助于命令行或第三方软件,其实有一个快捷键: shift + cmmand + .

  3. mac 查看占用的端口并关闭进程

    -i 查看某个端口是否被占用,如 lsof -i:8081 显示占用情况 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 12188 a ...

  4. SpringBoot起飞系列-数据访问(九)

    一.前言 前边我们已经学些了开发的基本流程,最重要的一步来了,怎么样和数据库交互才是最重要的,毕竟没有数据那就相当于什么也没做,本文我们来学习使用springboot整合jdbc.mybatis.jp ...

  5. 深入应用C++ 11 C2

    template<typename T> void print(T& t) { cout << "lvalue" << endl; } ...

  6. Thrift Oneway是什么?

    网上很多文章,都有各种涉及使用 oneway 的,基本是一个THRIFT IDL示例接口前面加 oneway.看完之后对 oneway的理解还是很模糊,于是看了下Thrift的代码,终于搞懂了 one ...

  7. Spectral Norm Regularization for Improving the Generalizability of Deep Learning论文笔记

    Spectral Norm Regularization for Improving the Generalizability of Deep Learning论文笔记 2018年12月03日 00: ...

  8. 最全最新java面试题系列全家桶(带答案)

    最全最新java面试题系列全家桶(带答案) 置顶 2019年04月06日 22:40:28 青春季风暴 阅读数 14082 文章标签: java面试题技术栈 更多 分类专栏: 面试   版权声明:本文 ...

  9. Neo4j Cypher语法(三)

    目录 5 函数 5.1 谓词函数 5.2 标量函数 5.3 聚合函数 5.4 列表函数 5.5 数学函数 5.6 字符串函数 5.7 Udf与用户自定义函数 6 模式 6.1 索引 6.2 限制 7 ...

  10. ccpc湘潭邀请赛 Partial Sum

    选定最多m的区间,使区间和的绝对值最大.但是左右端点不能重复选取 首先涉及到区间和的问题,就应该想到用前缀和去优化 这里对前缀和排序 然后贪心的去选取最大.次大 (比赛的时候脑子堵的很,没想出来 可惜 ...