什么是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. java使用nio(Paths,Files)遍历文件目录,转成java.io.File

    String directory = "C:\\Users\\Administrator\\AppData\\Local\\Temp\\8ad088a2-0bb3-41dc-89d9-2c5 ...

  2. Elasticsearch常见错误与配置简介

    一.常见错误 1.1 root用户启动elasticsearch报错 Elasticsearch为了安全考虑,不让使用root启动,解决方法新建一个用户,用此用户进行相关的操作.如果你用root启动, ...

  3. pyinstaller发布exe,弹出Failed to execute script main

    1.在PyCharm中按Alt+F12打开Terminal对话框 1.1我的项目文件放在wxpython目录下,D:\learn\Weather index insurance\wxpython> ...

  4. linux下后台启动springboot项目(转载)

    我们知道启动springboot的项目有三种方式: 运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn package”进行打包时,会打包成一个可以直接 ...

  5. Kubernetes架构

    一.Kubernetes 架构: Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. 1. Master 节点 Master 是 ...

  6. Warning:detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd".

    执行kubeadm init集群初始化时遇到: [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker ...

  7. 【破解APP抓包限制】Xposed+JustTrustMe关闭SSL证书验证!

    转载:https://www.jianshu.com/p/310d930dd62f 1 前言 这篇文章主要想解决的问题是,在对安卓手机APP抓包时,出现的HTTPS报文通过MITM代理后证书不被信任的 ...

  8. uni-app 使用本地打包配置安卓原生插件

    在使用 uni-app 开发的时候,遇到了一个很棘手的问题.即获取设备参数的时候 uni-app 并没有相关方法,而安卓开发是可以做到的,因为接的是三方推广,所以功能必须实现,所以求助了安卓的大佬帮我 ...

  9. Vue 组件中 data 为什么必须是函数

    原文地址 vue组件中的data必须是函数 类比引用数据类型 Object是引用数据类型,如果不用function 返回,每个组件的data 都是内存的同一个地址,一个数据改变了其他也改变了; jav ...

  10. Spring boot Gradle项目搭建

    Spring boot Gradle项目搭建 使用IDEA创建Gradle工程     操作大致为:File->new->Project->Gradle(在左侧选项栏中)     创 ...