1 传统方式连接数据库(效率较低)

此方法连接数据库,其性能、可靠性与稳定性随着用户访问量的增加逐渐下降,跟踪测试表明,其根本问题与Connection对象的创建有关。不过在这里还是讲一下此方法的实现:添加记录到数据库表中

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

String driver = "oracle.jdbc.driver.OracleDriver";

String url = "jdbc:oracle:thin:@192.168.1.3:1521:ora92";

String username = "scott";

String password = "tiger";

String sql = "insert into users(username,password) values (?,?)";

try {

Class.forName(driver);        //oracle.jdbc.driver.OracleDriver();

Connection conn = DriverManager.getConnection(url, username,password);

PreparedStatement ps = conn.prepareStatement(sql);    //Statement stat=conn.createStatement();

ps.setString(1, "张三");

ps.setString(2, "lisi");

ps.executeUpdate();

ps.close();

conn.close();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

2 使用JDBC数据源连接池方式连接数据库(效率高)

用这种方式连接数据库之前,首先需要配置TOMCAT服务器目录下的文件\tomcat5\conf\context.xml文件:

WEB-INF/web.xml

maxActive="100" maxIdle="30" maxWait="10000" username="scott"   password="tiger"

driverClassName="oracle.jdbc.OracleDriver"

url="jdbc:oracle:thin:@192.168.1.3:1521:ora92"/>

配置完后将oracle驱动程序类classes12.jar拷贝到\tomcat5\common\lib目录下即可。在这里强调一下这个问题,我就是遇到这种问题的,最后就是这样给解决的。之前我用了ojdbc5.jar驱动类文件总是不能够建立连接的,而且出现这样的问题:Cannot create JDBC oracle driver of class '' for connect URL 'jdbc:oracle:thin:@192.168.1.3:1521:ora92'"。希望这篇文章给读者有点启发。我的QQ号码:89262840

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.sql.DataSource;

String sql = "insert into users(username,password) values(?,?)";

String username = request.getParameter("username");

try {

Context context=new InitialContext();

DataSource ds=(DataSource)context.lookup("java:/comp/env/jdbc/oracle");

Connection conn=ds.getConnection();

PreparedStatement ps = conn.prepareStatement(sql);

ps.setString(1, StringUtil.filterHtml(username));

ps.setString(2, StringUtil.filterHtml(request.getParameter("password")));

result = ps.executeUpdate();

ps.close();

conn.close();

} catch (NamingException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

3 使用组件的方式连接数据库

本文主要以Commons DbUtils组件来连接数据库。它将JDBC中的一些类进行了二次封装,它不象hibernate(ORMapping)那样将JAVA对象与数据库映射。首先将oracle驱动类文件与Commons DbUtils组件的JAR文件一起引入到项目中。

String sql = "insert into users(username,password) values(?,?)";

String username = request.getParameter("username");

String param[]={StringUtil.filterHtml(username),StringUtil.filterHtml(request.getParameter("password"))

};

try {

Context initContext = new InitialContext();

DataSource ds = (DataSource) initContext.lookup("java:/comp/env/jdbc/oracleds");

QueryRunner qr = new QueryRunner(ds);

result = qr.update(sql, param);

} catch (NamingException e) {       // TODO Auto-generated catch block       e.printStackTrace();      } catch (SQLException e) {         e.printStackTrace();     }

java连接本地oracle数据库_JAVA连接oracle数据库的三种方式相关推荐

  1. java数组怎么全部初始化_Java数组初始化,这三种方式有什么区别?

    首先因为数组初始化要使用的时候必须确定数组的长度,也就是说数组的长度是不可变的. 在JAVA中创建数组有两种方式 : (1)静态创建 如 Object[] arr1 = {"a", ...

  2. java类初始数组_java中数组初始化的三种方式是什么

    java中数组初始化的三种方式是:1.静态初始化,如[int a[] = {2, 0, 1, 9, 2020}]:2.动态初始化,如[int[] c = new int[4]]:3.默认初始化,如[i ...

  3. java 时间戳 对比_Java中获取时间戳的三种方式对比实现

    Java中获取时间戳 三种方式对比 最近项目开发过程中发现了项目中获取时间戳的业务.而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式. 1.System ...

  4. springboot:java实现邮件及附件发送、HTML正文的三种方式(一)【附带源码】

    0. 引言 邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒.统计数据定期发送等需求.一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从零实现邮件发送,这是我们要掌 ...

  5. 对Java多线程编程的初步了解,实现多线程的三种方式以及多线程并发安全的线程同步机制

    什么叫进程?什么叫线程? 进程相当于一个应用程序,线程就是进程中的一个应用场景或者说是一个执行单元,一个进程可以启动多个线程,每个线程执行不同的任务,一个线程不能单独存在,他必须是进程的一部分,当进程 ...

  6. java json的使用方法_JAVA编写JSON常用的三种方法

    JAVA编写JSON常用的三种方法 Szx • 2019 年 11 月 15 日 1.jsonlib需要引入的包也多,代码也相对多一些. 2.Gson:谷歌的 3.FastJson:阿里巴巴的,这几个 ...

  7. java 数组 源码_Java数组转List的三种方式及对比

    来源:https://s.yam.com/6wu6n 前言: 本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解析. 一.最常见方式(未必最佳 ...

  8. java 如何初始化数组_java中初始化数组的三种方式分别是什么

    三种初始化方式: 1.静态初始化:创建+赋值 2.动态初始化:先创建再赋值 3.默认初始化:创建之后若不赋值则会被赋对应数据类型的默认值 (视频教程推荐:java视频) 我们来看一下具体代码:publ ...

  9. java遍历一个map集合_Java遍历Map集合的四种方式

    Map 集合的遍历与 List 和 Set 集合不同.Map 有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历.Map 以及实现 Map 的接口类(如 HashMap.Tr ...

  10. java中break什么意思_Java中break的第三种用法说明

    在Java中,break语句有三种用法,第一种是用于终止switch语句中的语句序列,第二种是用于退出循环,然而第三种是用作goto语句的"文明"形式! 我们知道,goto语句会破 ...

最新文章

  1. python类实例化 输入参数名字 下划线_Python 的类的下划线命名有什么不同?
  2. sql注入_1-4_post盲注
  3. Dapr集成之GRPC 接口
  4. 曝光原理_泰国精戈咖啡效果反馈 作用原理曝光
  5. C语言为四维数组申请动态内存空间的方法(一)
  6. h264码流文件通过计算first_mb_in_slice区分帧边界
  7. 深入理解SpringBoot配置
  8. (六)Oracle学习笔记—— 约束
  9. 36. Web 主机托管
  10. 拓端tecdat|R语言Lee-Carter模型对年死亡率建模预测期望寿命
  11. 蓝牙协议分析工具Wireshark/Frontline/Ellisys的使用
  12. Android 最常用的设计模式八 安卓源码分析—工厂方法模式factory
  13. 如何批量将 jpg 图片转换为 png 格式
  14. 股权架构设计五大关键要点
  15. (MATLAB)大家来找茬-简易的彩色图像找不同
  16. input内加小图标
  17. Resolver error Error Downloading VS Code Server failed - please install either curl or wget on the
  18. 【离散数学】1. 数理逻辑
  19. excel分类汇总多个工作表
  20. Culture Shock

热门文章

  1. 双数组 实现 Trie
  2. 批处理延时启动的几个方法
  3. UIPopoverController的使用
  4. 狄克斯特拉算法(入门)
  5. intellij idea 部署项目的时候 图中application context 写不写有什么关系?有什么作用?...
  6. 微型计算机c240,PC微机原理实验.doc
  7. Windows下Python包和模块的安装方法(亲测手动安装)
  8. postman模拟HTTP请求
  9. PHP实现数组中两个数的和等于给定的目标值
  10. 反思避免只是小聪明:更加稳重 更加踏实