什么是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. 2019-2020 ICPC, Asia Jakarta Regional Contest H. Twin Buildings

    As you might already know, space has always been a problem in ICPC Jakarta. To cope with this, ICPC ...

  2. Mysql安装后在服务里找不到和服务启动不起来的解决方法

    一,在安装完Mysql数据库后,发现在控制面板->管理->服务中找不到Mysql的服务启动 解决方法如下:开启命令行,按照如下步骤即可: 1.进入到mysql的安装包,在bin里执行:my ...

  3. Plsql配置后,sql语句可以简写 快速使用

    in=INSERT up=UPDATE se=SELECT fr=FROM wh=WHERE or=ORDER BY de=DELETE df=DELETE FROM sf=SELECT * FROM ...

  4. 走近kafka-文件存储

    过期的数据才会被自动清除以释放磁盘空间.比如我们设置消息过期时间为2天,那么这2天内的所有消息都会被保存到集群中,数据只有超过了两天才会被清除. Kafka只维护在Partition中的offset值 ...

  5. Scala 内部类及外部类

    转自:https://blog.csdn.net/yyywyr/article/details/50193767 Scala内部类是从属于外部类对象的. 1.代码如下 package com.yy.o ...

  6. hard or 9102 字符串DP---Educational Codeforces Round 57 (Rated for Div. 2)

    题意:http://codeforces.com/problemset/problem/1096/D 思路:参考:https://blog.csdn.net/qq_41289920/article/d ...

  7. 超级实用的 Java 工具类

    超级实用的 Java 工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取 ...

  8. Codeforces 1228E. Another Filling the Grid

    传送门 看到 $n=250$ 显然考虑 $n^3$ 的 $dp$ 设 $f[i][j]$ 表示填完前 $i$ 行,目前有 $j$ 列的最小值是 $1$ 的合法方案数 那么对于 $f[i][j]$ ,枚 ...

  9. Java 封装与类

    一.面向对象编程 面向对象编程三大特性:封装.继承和多态. 类是实现封装的手段,是面向对象编程的基本单元. 封装隐藏了类的内部实现细节,暴露给外界可控的操作,提高数据的完整性和安全性,提高模块的可重用 ...

  10. DVWA reCAPTCHA key: Missing

    修改dvwa文件夹下文件config.inc.php change: $_DVWA[ 'recaptcha_public_key' ] = ' '; $_DVWA[ 'recaptcha_privat ...