Java 操作Oracle数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class Operator {
// 定义连接所需的字符串
// 192.168.0.X是本机地址(要改成自己的IP地址),1521端口号,XE是精简版Oracle的默认数据库名
private static String USERNAMR = "C##NVSSMS";
private static String PASSWORD = "111111";
private static String DRVIER = "oracle.jdbc.driver.OracleDriver";
private static String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
// 创建一个数据库连接
Connection connection = null;
// 创建预编译语句对象,一般都是用这个而不用Statement
PreparedStatement pstm = null;
// 创建一个结果集对象
ResultSet rs = null;
/**
* 向数据库中增加数据
* 首先获取表内数据总数,总数+1为新增数据的id值
* @param stuName:学生姓名
* @param gender:学生性别,1表示男性,2表示女性
* @param age:学生年龄
* @param address:学生住址
*/
public void AddData(String stuName, int gender, int age, String address) {
connection = getConnection();
// String sql =
// "insert into student values('1','王小军','1','17','北京市和平里七区30号楼7门102')";
String sql = "select count(*) from student where 1 = 1";
String sqlStr = "insert into student values(?,?,?,?,?)";
int count = 0;
try {
// 计算数据库student表中数据总数
pstm = connection.prepareStatement(sql);
rs = pstm.executeQuery();
while (rs.next()) {
count = rs.getInt(1) + 1;
System.out.println(rs.getInt(1));
}
// 执行插入数据操作
pstm = connection.prepareStatement(sqlStr);
pstm.setInt(1, count);
pstm.setString(2, stuName);
pstm.setInt(3, gender);
pstm.setInt(4, age);
pstm.setString(5, address);
pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
/**
* 向数据库中删除数据
* @param stuName:根据姓名删除数据
*/
public void DeleteData(String stuName) {
connection = getConnection();
String sqlStr = "delete from student where stu_name=?";
System.out.println(stuName);
try {
// 执行删除数据操作
pstm = connection.prepareStatement(sqlStr);
pstm.setString(1, stuName);
pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
/**
* 删除表
* @param stuName:表名称
*/
public void DeleteTable(String name) {
connection = getConnection();
String sqlStr = "DROP TABLE "+name;
try {
// 执行删除数据操作
pstm = connection.prepareStatement(sqlStr);
pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
/**
* 向数据库中修改数据
* @param stuName:学生姓名,根据此值查询要修改的某行值
* @param gender
* @param age
* @param address
*/
public void UpdateData(String stuName, int gender, int age, String address) {
connection = getConnection();
String sql = "select id from student where 1 = 1 and stu_name = ?";
String sqlStr = "update student set stu_name=?,gender=?,age=?,address=? where id=?";
int count = 0;
try {
// 计算数据库student表中数据总数
pstm = connection.prepareStatement(sql);
pstm.setString(1, stuName);
rs = pstm.executeQuery();
while (rs.next()) {
count = rs.getInt(1);
System.out.println(rs.getInt(1));
}
// 执行插入数据操作
pstm = connection.prepareStatement(sqlStr);
pstm.setString(1, stuName);
pstm.setInt(2, gender);
pstm.setInt(3, age);
pstm.setString(4, address);
pstm.setInt(5, count);
pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
/**
* 向数据库中查询数据
*/
public void SelectData(String sql, String path) {
connection = getConnection();
try {
pstm = connection.prepareStatement(sql);
rs = pstm.executeQuery();
ExcelOperate.writeExcel(rs, path);
} catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
/**
* 使用ResultSetMetaData计算列数
*/
public void SelectData2() {
connection = getConnection();
String sql = "select * from employees where 1 = 1";
int count = 0;
try {
pstm = connection.prepareStatement(sql);
rs = pstm.executeQuery();
while (rs.next()) {
count++;
}
ResultSetMetaData rsmd = rs.getMetaData();
int cols_len = rsmd.getColumnCount();
System.out.println("count=" + count + "\tcols_len=" + cols_len);
} catch (SQLException e) {
e.printStackTrace();
} finally {
ReleaseResource();
}
}
/**
* 获取Connection对象
*
* @return
*/
public Connection getConnection() {
try {
Class.forName(DRVIER);
connection = DriverManager.getConnection(URL, USERNAMR, PASSWORD);
System.out.println("成功连接数据库");
} catch (ClassNotFoundException e) {
throw new RuntimeException("class not find !", e);
} catch (SQLException e) {
throw new RuntimeException("get connection error!", e);
}
return connection;
}
/**
* 释放资源
*/
public void ReleaseResource() {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstm != null) {
try {
pstm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
转载自:
http://blog.csdn.net/dopamy_busymonkey/article/details/72459529
Java 操作Oracle数据库的更多相关文章
- Java操作Oracle数据库以及调用存储过程
操作Oracle数据库 publicclass DBConnection { //jdbc:oracle:thin:@localhost:1521:orcl publicstaticf ...
- JAVA操作ORACLE数据库的存储过程
一.任务提出 JAVA操作oracle11g存储过程实验需要完成以下几个实例: 1.调用没有返回参数的过程(插入记录.更新记录) 2.有返回参数的过程 3.返回列表的过程 4.返回带分页的列表的过程. ...
- JAVA操作Oracle数据库中的事务
实验1: create table yggz(code int, salary number(7,2)); insert into yggz values(1, 1000); insert into ...
- Java java jdbc thin远程连接并操作Oracle数据库
JAVA jdbc thin远程连接并操作Oracle数据库 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 编码工具:Eclipse 编码平台:W ...
- loadrunner 脚本开发-调用java jar文件远程操作Oracle数据库测试
调用java jar文件远程操作Oracle数据库测试 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 Loadrunner:11 备注:想学ora ...
- Java操作Oracle
public class DBCon { // 数据库驱动对象 public static final String DRIVER = "oracle.jdbc.driver.OracleD ...
- Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)
转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...
- dos命令行连接操作ORACLE数据库
C:\Adminstrator> sqlplus "/as sysdba" 查看是否连接到数据库 SQL> select status from v$instance; ...
- .Net Core API使用ODP.NET操作Oracle数据库
.Net Core API使用ODP.NET操作Oracle数据库 1.下载Oracle.ManagerDataAccess.Core. 右键依赖项——管理NuGet程序包. 在浏览选项中查询Orac ...
随机推荐
- Spring 之AOP AspectJ切入点语法详解
记录一下,以后学习 https://blog.csdn.net/zhengchao1991/article/details/53391244
- 使用 SOS 对 Linux 中运行的 .NET Core 进行问题诊断
目录 说明 准备一个方便的学习环境 2.x 配置内容 3.x 配置内容 工具介绍 lldb sos plugin 1. attach 到进程上进行调试 2. 分析core dump文件 SOS 案例分 ...
- vue vue-cli postcss-sprites 配置
vue-cli2.x创建完项目 安装postcss-sprites yarn add postcss-sprites -D 根目录配置postcss.config.js配置中,需要注意,1:当有用px ...
- python virtualenv 基本使用
下载 pip install virtualenv 校验是否成功 virtualenv --version 使用 创建env环境 要写一个新项目,使用env先创建环境 cd xx\xx\xx\ # 进 ...
- SQLI-LABS复现通关
sql-lab 复现通关(深入学习) less-1 基于错误的单引号字符串 - 正常访问 127.0.0.1/?id=1 - 添加 ' 返回报错信息:You have an error in your ...
- mysql中更改字段属性实际上都做了哪些操作
mysql> set profiling=1; Query OK, 0 rows affected (0.00 sec) mysql> alter table test modify n ...
- 【葵花宝典】kolla部署OpenStack-AllinOne
1.关闭防火墙以及内核安全机制 systemctl stop firewalld systemctl disable firewalld ##永久性关闭 setenforce 0 sed -i 's/ ...
- 使用yaml来实现ingress-nginx
创建一个ingress-nginx [root@k8s-master ingress]# cat ingress-nginx.yaml apiVersion: v1 kind: Namespace m ...
- 未使用绑定变量对share_pool的影响
oracle SGA中包含数据高速缓冲,重做日志缓冲,以及共享池(share_pool).共享池中包含库高速缓冲(所有的SQL,执行计划等)和数据字典缓冲(对象的定义,权限等). 所以,如果SQL中没 ...
- 理解C#中的 async await
前言 一个老掉牙的话题,园子里的相关优秀文章已经有很多了,我写这篇文章完全是想以自己的思维方式来谈一谈自己的理解.(PS:文中涉及到了大量反编译源码,需要静下心来细细品味) 从简单开始 为了更容易理解 ...