背景知识

含义: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. Objective-C语言控制语句

    • 分支语句• 循环语句• 跳转语句 Objective-C中的控制语句有以下几类:• 分支语句:if-else, switch• 循环语句:while, do-while, for• 与程序转移有关 ...

  2. halcon学习笔记——机器视觉工程应用的开发思路【转】

    转自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html 机器视觉工程应用主要可划分为硬件和软件两大部分. 硬件:工程应 ...

  3. Getting Started with the C# Driver

    1.下载 如果下载的.zip文件,只需要解压即可. 如果安装的.msi文件,它会将C#驱动DLL放在C:\Program Files (x86)\MongoDB\CSharp Driver xxx的位 ...

  4. hdwiki中插件开发指南

    插件就是为了满足个性化需求按照HDWiki插件开发规范编写的可插拔程序,虽然可以直接对HDWiki进行二次开发实现插件同样的功能,但是这样做势必影响到系统的升级和稳定性. 采用插件的方式,可以随时进行 ...

  5. Struts输出流向jsp页面写入图片乱码

    通过Struts2输出字节流将图片写到jsp页面上,之前用jquery的div对象的html()方法接收一直显示乱码,查了很多网页都找不到解决办法,不是说contentype="multip ...

  6. javaWEB国际化(jsp中使用)

    在jsp页面中使用国际化方法,首先将jstl开源架包:jstl.jar,standard.jar导进去 并在src目录下建立以test开头,.properties结尾的文件:test_en_US.pr ...

  7. css基本样式总结

    1:背景(background) <!DOCTYPE html> <html> <head lang="en"> <meta charse ...

  8. Unity-Animator深入系列---录制与回放

    回到 Animator深入系列总目录 Animator自带了简单的动画录制,回放功能.但可惜的是不支持持久化的数据输出.因而不能作为录像保存 不过这种可以作为竞速,格斗类游戏在结束时经常出现的游戏回放 ...

  9. JAVA基础知识之网络编程——-基于AIO的异步Socket通信

    异步IO 下面摘子李刚的<疯狂JAVA讲义> 按照POSIX标准来划分IO,分为同步IO和异步IO.对于IO操作分为两步,1)程序发出IO请求. 2)完成实际的IO操作. 阻塞IO和非阻塞 ...

  10. Uva 10129 单词

    题目链接:https://uva.onlinejudge.org/external/101/10129.pdf 把单词的首字母和最后一个字母看做节点,一个单词就是一个有向边.有向图的欧拉定理,就是除了 ...