背景知识

含义:JDBC是一种java数据库连接技术,能实现java程序对各种数据库的访问。由一组使用java语言编写的类和接口组成,这些类和接口称为JDBC API,他们位于java.sql 以及javax.sql(扩展内容,x就是扩展的意思) 中。

作用:JDBC就相当于java和数据库之间的一座桥梁。可以建立和数据库之间的访问连接;将编写好的SQL语句发送到数据库中执行;对数据库返回的执行结果进行处理。

JDBC API : DriverManager类,管理jdbc的驱动;Connection 接口,连接数据库并担任传送数据的任务;Statement接口,由Connection产生负责执行SQL语句;ResultSet接口,保存Statement执行后所产生的查询结果。

java官方提供接口,数据库厂商提供接口实现类(驱动)。

得把数据库服务启动才能连接,别忘了哦~

1、创建Java项目,导入JDBC驱动JAR包
(1)在项目下创建lib目录
(2)将ORACLE主目录\jdbc\lib\ojdbc6.jar复制到lib目录下
(3)在ojdbc6.jar上右键-->Build Path-->Add To Build Path

2、在myeclipse 10下建立数据库的连接

作用:加载驱动和获得连接时容易把URL写错,在这里配置好了,等到写时会有一个提示功能

Window-->Open Perspective(打开视图)-->Myeclipse DataBase Explorer-->Myeclipse Derby (右键 new)-->Driver Template(模板,样板,范本) 下拉列表选择Oracle (Thin Driver)-->Driver Name 写ORCL -->剩下的就是获得数据库连接的url name password 正常填写就可以了。-->添加JARS ,去目录下找到ojdbc6.jar-->save password --> Test Driver 测试连接是否建立成功.

3、JDBC访问数据库的步骤

  1. 加载驱动类:Class.forName("JDBC驱动类的名称"),如果不存在给定的类,则抛出异常,ClassNotFoundException——重复操作项
  2. Connection conn=DriverManager.getConnection(url,userName,password),会搜索整个驱动程序列表,寻找匹配的驱动程序,用户名和密码是可选的——重复操作项
  3. Statement stmt=conn.createStatement();连接成功后,用该连接创建Statement接口的实例
  4. int rows=stmt.executeUpdate(sql); //insert、update、delete 都用executeUpdate()方法,且返回受影响行数
  5. ResultSet res=stmt.executeQuery(sql);     //查询用 executeQuery()方法,返回结果集,next()判断结果集是否为空,如果不为空,调用getXxx()方法,得到记录中字段对应的值
  6. while(res.next()){
                    /**从当前行中提取各列的值
                    将第1列的数据以int类型取出
                    int id=res.getInt(1);
                    将第2列的数据以String类型取出
                    String name=res.getString(2);
                    将第3列的数据以String类型取出
                    String sex=res.getString(3);*/
                    //这两种写法都可以,建议采取第二种写法
                    //将id列的值以int类型取出
                    int id=res.getInt("编号");   //括号中可写别名
                    //将name列的值以String类型取出
                    String name=res.getString("姓名");
                    //将sex列的值以String类型取出
                    String sex=res.getString("性别");
                    
                    System.out.println(id+"\t"+name+"\t"+sex);
                }
  7. 关闭对象时,按照与创建时相反的顺序,先关闭ResultSet,再关闭Statement,最后关闭Connection——重复操作项

四、PreparedStatement对象

“以上为基本连接方式,但有不完善的地方,比如插入SQL语句时,极易发生SQL注入,用户修改sql语句,为了防止,特使用PreparedStatement对象”。

PreparedStatement对象接口implements 自Statement,使用更加灵活,更有效率。SQL语句中写占位符?,预处理(预编译)SQL语句,一旦完成预编译,SQL语句的结构就确定下来,不会因为用户输入的数据改变SQL语句的执行结构,从而避免SQL注入攻击。

pstmt=conn.prepareStatement(sql);

pstmt.setXxx(1,value值);//绑定参数

五、数据库辅助类

 作用:将重复操作项封装成一个jar文件放在项目下,以后遇到加载驱动类,获得连接,关闭对象的操作,直接调用即可。修改数据库配置时,只需修改修改配置文件即可。
配置文件-->ConfigManager-->DBHelper-->程序
  1. 配置文件:jdbc.properties,用键值对的方式保存数据库连接参数。在项目src下新建file,add   key-value   key为名字可随便取,value则不可
  2. ConfigManager类,在讲ConfigManager类之间先大致说下懒汉和
    //饿汉单例模式
    public class EagerSingleton {
    //使用private修饰构造函数,禁止外部代码直接通过构造函数创建对象
    private EagerSingleton(){ }
    //声明私有静态成员,保存唯一的实例,立即创建唯一实例
    private static EagerSingleton instance=new EagerSingleton();
    //定义公共方法,获取唯一实例
    public static EagerSingleton getInstance(){
    return instance;
    } }
    //懒汉单例模式
    public class LazySingleton {
    //私有构造方法
    private LazySingleton(){ }
    //声明私有静态实例
    private static LazySingleton instance=null;
    //定义公共的获取实例的方法
    public static LazySingleton getIstance(){
    //在准备获取实例时进行判断,如果还未实例化,则创建唯一实例
    if(instance!=null){
    instance=new LazySingleton();
    }
    return instance;
    }
    }

    下面开始写:

    //用来加载配置文件的单例类
    public class ConfigManager {
    //加载进来的配置参数
    private Properties props=null;
    //唯一实例
    private static ConfigManager instance=null;
    //私有构造方法,负责加载配置文件
    private ConfigManager(){
    try {
    InputStream is=ConfigManager.class.getResourceAsStream("/jdbc.properties");
    props.load(is);
    is.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    //获得ConfigManager的唯一实例
    public static ConfigManager getInstance(){
    if(instance==null){
    instance=new ConfigManager();
    }
    return instance;
    }
    //获得参数
    public String getProperty(String name) {
    return props.getProperty(name);
    } }
    public class DBHelper {
    //静态块在类加载时执行一次
    static{
    String driverClass=ConfigManager.getInstance().getProperty("jdbc.driver_class");
    try {
    Class.forName(driverClass);
    } catch (ClassNotFoundException e) {
    //在静态块中发生异常时,需要抛出ExceptionInInitializerError类型的异常
    throw new ExceptionInInitializerError(e);
    }
    }
    //获得连接
    public static Connection getConnection()throws SQLException {
    String url=ConfigManager.getInstance().getProperty("jdbc.url");
    String userName=ConfigManager.getInstance().getProperty("jdbc.username");
    String password=ConfigManager.getInstance().getProperty("jdbc.password");
    return DriverManager.getConnection(url, userName, password);
    }
    //关闭资源
    public void closeAll(Connection conn,Statement stmt,ResultSet res) {
    try {
    if(res!=null){
    res.close();
    }
    if(stmt!=null){
    stmt.close();
    }
    if(conn!=null){
    conn.close();
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } }

    最后把上边两个类导成JAR包,将jar包和配置文件一起安在需要的项目下。终于完事啦,断断续续写了好几天。噜啦啦~~~

JDBC操作Oracle数据库的更多相关文章

  1. JDBC操作Oracle数据库——实际操作过程中的小总结

    1.对数据库中,表的每一行数据记录的增删改查 增:insert into 表名 values() 删:delete 表名 where 条件(id=?) 改:update 表名 set 列名=? whe ...

  2. Java java jdbc thin远程连接并操作Oracle数据库

    JAVA jdbc thin远程连接并操作Oracle数据库 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 编码工具:Eclipse 编码平台:W ...

  3. jdbc连接oracle数据库

    /*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...

  4. JDBC连接Oracle数据库的问题

    场景:最近做一个java web项目,使用jdbc连接Oracle数据库,遇到了两个问题. 问题1:jdbc连接不上Ubuntu Oracle服务器? 后来发现这个问题的原因是由于连接字符串写错了,修 ...

  5. 用JDBC访问ORACLE数据库 关于commit 增快效率 大数据 等的整理

    1.问:用JDBC访问ORACLE数据库,做DELETE操作,能用JAVA多线程实现吗? ORACLE服务器要怎么配?(以下答案来自网络,仅供参考) 答: Oracle有自己的锁机制.就算你开100条 ...

  6. Java操作Oracle数据库以及调用存储过程

    操作Oracle数据库 publicclass DBConnection {     //jdbc:oracle:thin:@localhost:1521:orcl     publicstaticf ...

  7. loadrunner 脚本开发-调用java jar文件远程操作Oracle数据库测试

    调用java jar文件远程操作Oracle数据库测试 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 Loadrunner:11 备注:想学ora ...

  8. JAVA通过JDBC连接Oracle数据库详解【转载】

    JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...

  9. .Net Core API使用ODP.NET操作Oracle数据库

    .Net Core API使用ODP.NET操作Oracle数据库 1.下载Oracle.ManagerDataAccess.Core. 右键依赖项——管理NuGet程序包. 在浏览选项中查询Orac ...

随机推荐

  1. Java应用程序的打包和发布

    Java应用程序的打包和发布 简化Java应用程序的打包和发布 发布Java应用程序时Java提供了一系列打包和发布工具,可以显著的简化发布过程 该文章提供了打包Java code的几种方法,探讨Ja ...

  2. 鸟哥的linux私房菜之档案与文件系统的压缩与打包

    00000001 节约空间 其实简单的说压缩就是把没有用到的0给去掉,解压的时候在加上 在linux中,压缩文件档案的扩展名大多是.tar,.tar.gz,tgz,gz,.Z,.bz2 compres ...

  3. 2015.01.15(android AsyncTask)

    参考网址:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html /* * Params 启动任务执行的输入参数,比如HTT ...

  4. composer未升级报错

    错误: Cannot adopt OID in SQUID-MIB: cacheClients ::= { cacheProtoAggregateStats 15 } Cannot adopt OID ...

  5. zabbix源码安装

    Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置. 被监控端:主机通过安装agent方式采集数据,网络设备通过SNMP方式采集数据 Server端:通过收集SNMP和agent发 ...

  6. 内存映射MMAP和DMA【转】

    转自:http://blog.csdn.net/zhoudengqing/article/details/41654293 版权声明:本文为博主原创文章,未经博主允许不得转载. 这一章介绍Linux内 ...

  7. 【Pro ASP.NET MVC 3 Framework】.学习笔记.8.SportsStore:管理

    管理功能,如何身份认证,对controller和action方法过滤安全的访问,并在用户需要时提供证书. 1 添加分类管理 方便管理的controller,有两类页面,List页面和edit页面. 1 ...

  8. 转载WPF SDK研究 之 AppModel

    Jianqiang's Mobile Dev Blog iOS.Android.WP CnBlogs Home New Post Contact Admin Rss Posts - 528 Artic ...

  9. MySQL 添加列,修改列,删除列

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table ...

  10. bin和sbin的区别

    bin和sbin的区别: bin:用户命令(所有用户均可使用) sbin:管理命令(通常只有管理员可以使用)