什么是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. R语言与概率统计(三) 多元统计分析(中)

    模型修正 #但是,回归分析通常很难一步到位,需要不断修正模型 ###############################6.9通过牙膏销量模型学习模型修正 toothpaste<-data. ...

  2. C2B电商三种主要模式的分析_数据分析师

    C2B电商三种主要模式的分析_数据分析师 在过去的一年中电商领域血雨腥风,尤其是天猫.京东.苏宁.当当.易讯等B2C电商打得不亦乐乎.而随着B2C领域竞争进入白热化阶段,C2B模式也在天猫" ...

  3. MySQL数据库锁机制之MyISAM引擎表锁和InnoDB行锁详解

    转 http://blog.csdn.net/hsd2012/article/details/51112009 转 http://blog.csdn.net/e421083458/article/de ...

  4. SpringBoot: 5.访问静态资源(转)

    springboot默认从项目的resources里面的static目录下或者webapp目录下访问静态资源 方式一:在resources下新建static文件(文件名必须是static) 在浏览器中 ...

  5. .NET Core WebApi中返回 json 数据首字母大小写问题

    public void ConfigureServices(IServiceCollection services) { services.AddMvc().AddJsonOptions(opt =& ...

  6. C#作业系统提示和故障排除

    使用Unity C#作业系统时,请确保遵守以下内容: 不要从作业访问静态数据 从作业访问静态数据会绕过所有安全系统.如果您访问错误的数据,您可能会以意想不到的方式崩溃Unity.例如,访问MonoBe ...

  7. Visual Studio Code的设置及插件同步

    Visual Studio Code的设置及插件同步 使用Visual Studio Code开发有一段时间了,用起来是极其的顺手,但是唯独一点不爽的就是,Visual Studio Code不像Vi ...

  8. k8s 工具集

    Volcano 资源调度器 apollo 配置中心 spinnaker 持续部署系统 jaeger 分布式跟踪系统.它用于监视和诊断基于微服务的分布式系统,包括: 分布式上下文传播 分布式交易监控 根 ...

  9. vi去掉^M

    Windows下编辑的文本文件or程序文件,拷贝到linux下,用vi打开时,有时候会看到每行末尾有个 ^M 的符号. 这里介绍一个可以快速去除^M符号的方法: 用vi编辑器打开该文件,然后输入: : ...

  10. hive的hiveserver2模式启动不起来,发现Hadoop一直处于安全模式

    hive的hiveserver2模式启动不起来,发现Hadoop一直处于安全模式 命令介绍 命令hadoop fs –safemode get 查看安全模式状态 命令hadoop fs –safemo ...