jdbc链接Oracle数据库的封装
在src下创建properties文件
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@//127.0.0.1:1521/XE
username=scott
password=123456

package util; import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties; public class JDBCUitl {
private static String driver;
private static String url;
private static String username;
private static String password; static {
// 创建properties对象获取文件
Properties ps = new Properties();
// 获取流对象
InputStream is = JDBCUitl.class.getResourceAsStream("/driver.properties");
try {
// 加载文件
ps.load(is);
driver = ps.getProperty("driver");
url = ps.getProperty("url");
username = ps.getProperty("username");
password = ps.getProperty("password");
// 加载驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* 获取链接对象
*
* @return conn
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn=DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
} /**
* 创建链接对象
*
* @param conn
* @param sql
* @return ps
*/
public static PreparedStatement getPreparedStatement(Connection conn, String sql) {
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return ps; } /**
* 增刪改通用语句
*
* @param sql
* @param objs
* @return i
*/
public static int executeDML(String sql, Object... objs) {
Connection conn = getConnection();
PreparedStatement ps = getPreparedStatement(conn, sql);
try {
conn.setAutoCommit(false);
for (int i = 0; i < objs.length; i++) {
ps.setObject(i + 1, objs[i]);
}
int i = ps.executeUpdate();
conn.commit();
return i;
} catch (SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
return -1;
} public void allClose(ResultSet rs, PreparedStatement ps, Connection conn) {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
} try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
} }
}
package daoImp; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; import dao.EmpDao;
import pojo.Emp;
import util.JDBCUitl; public class EmpDaoImp implements EmpDao {
/**
* 实现查询所有用户信息
*/
@Override
public ArrayList<Emp> selAllEmpInfo() {
String sql = "select * from empe";
Connection conn = JDBCUitl.getConnection();
PreparedStatement ps = JDBCUitl.getPreparedStatement(conn, sql);
ArrayList<Emp> empList = new ArrayList<Emp>();
try {
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Emp e = new Emp();
e.setEmpId(rs.getInt("empid"));
e.setName(rs.getString("ename"));
e.setEmoney(rs.getInt("emoney"));
e.setEqq(rs.getString("eqq"));
empList.add(e);
}
} catch (SQLException e) {
e.printStackTrace();
}
return empList;
} /**
* 根据id查询用户信息
*/
@Override
public Emp selEmpByEmpId(int empId) {
String sql = "select * from empe where empid=?";
Connection conn = JDBCUitl.getConnection();
PreparedStatement ps = JDBCUitl.getPreparedStatement(conn, sql);
Emp emp = null;
try {
ps.setInt(1, empId);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
emp = new Emp();
emp.setEmpId(rs.getInt("empid"));
emp.setName(rs.getString("ename"));
emp.setEmoney(rs.getInt("emoney"));
emp.setEqq(rs.getString("eqq"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return emp;
} /**
* 添加用户信息
*/
@Override
public int insEmpInfo(int empId, String ename, int emoney, String eqq) {
String sql = "insert into empe values(?,?,?,?)";
int i = JDBCUitl.executeDML(sql, empId, ename, emoney, eqq);
return i;
} /**
* 根据用户id更改姓名
*/
@Override
public int upEmpByEmpId(String newName, int empId) {
String sql = "update empe set ename=? where empid=?";
int i = JDBCUitl.executeDML(sql, newName, empId);
return i;
} /**
* 根据id删除用户信息
*/
@Override
public int delEmpByEmpId(int empId) {
String sql = "delete from empe where empid=?";
int i = JDBCUitl.executeDML(sql, empId);
return i;
} }
jdbc链接Oracle数据库的封装的更多相关文章
- Java JDBC链接Oracle数据库
package com.test.test; import java.io.FileInputStream;import java.io.FileNotFoundException;import ja ...
- JDBC链接oracle数据库
package test; import java.sql.* ; public class JDBC_Test { //orcl为oracle数据库中的数据库名,localhost表示连接本机的or ...
- JDBC连接Oracle数据库的问题
场景:最近做一个java web项目,使用jdbc连接Oracle数据库,遇到了两个问题. 问题1:jdbc连接不上Ubuntu Oracle服务器? 后来发现这个问题的原因是由于连接字符串写错了,修 ...
- Oracle 远程链接oracle数据库服务器的配置
远程链接oracle数据库服务器的配置 by:授客 QQ:1033553122 原理: 一.Oracle客户端与服务器端的通讯机制 1.OracleNet协议 如下图所示,Oracle通过Oracle ...
- 链接oracle数据库 生成表对应的javabean
package com.databi.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOExc ...
- 历尽磨难之PL/SQL链接Oracle数据库
说起来都是泪啊,上司布置的任务需要远程连接Oracle数据库,说实话这又是我人生中的第一次.我听到以后觉得不是什么大问题,然而我错了..错的很厉害! 我搞了一天一夜才弄好,这里面原因有很多,大体来讲还 ...
- jdbc连接oracle数据库
/*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...
- 用JDBC访问ORACLE数据库 关于commit 增快效率 大数据 等的整理
1.问:用JDBC访问ORACLE数据库,做DELETE操作,能用JAVA多线程实现吗? ORACLE服务器要怎么配?(以下答案来自网络,仅供参考) 答: Oracle有自己的锁机制.就算你开100条 ...
- 关于vs2008使用oracleclient链接oracle数据库报报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
用vs2008链接oracle数据库出现问题,报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用,从网上找了好久方法,有两种oracle客户端文件权限,和运行vs2008以管理 ...
随机推荐
- Mysql 数据库优化(一)
一 避免网页访问错误 1 数据库连接timeout产生页面5xx错误 2 慢查询造成页面无法加载 3 阻塞造成数据无法提交 二 增加数据库的稳定性 三 优化用户体验 1 流畅的页面访问速度 2 良好 ...
- 威胁快报|挖矿团伙8220进化,rootkit挖矿趋势兴起
近日,阿里云安全团队发现8220挖矿团伙为了更持久的驻留主机以获得最大收益,开始使用rootkit技术来进行自我隐藏.这类隐藏技术的使用在watchdogs等挖矿蠕虫使用后开始出现逐渐扩散和进化的趋势 ...
- oracle CBO下使用更具选择性的索引
基于成本的优化器(CBO, Cost-Based Optimizer)对索引的选择性进行判断来决定索引的使用是否能提高效率. 如果索引有很高的选择性, 那就是说对于每个不重复的索引键值,只对应数量很少 ...
- 2018-8-10-win10-uwp-读取保存WriteableBitmap-、BitmapImage
title author date CreateTime categories win10 uwp 读取保存WriteableBitmap .BitmapImage lindexi 2018-08-1 ...
- Vue打包后放到服务器出现Loading chunk {n} failed 错误
导航栏点击切换时 会出现Loading chunk {n} failed ,刷新之后便不会出现.而且n在最新的build的文件中,n没有存在 偶然一次发现,项目更新迭代开发时上传测试环境后就会出现, ...
- 2018-8-10-win10-uwp-后台获取资源
title author date CreateTime categories win10 uwp 后台获取资源 lindexi 2018-08-10 19:17:19 +0800 2018-2-13 ...
- HDU 2871"Memory Control"(线段树区间和并+set.lower_bound)
传送门 •题意 有 n 个内存单元(编号从1开始): 给出 4 种操作: (1)Reset :表示把所有的内存清空,然后输出 "Reset Now". (2)New x :表示申请 ...
- codeforce 379(div.2)
A.B略 C题 ——贪心,二分查找: 对于每一个a[i], 在d中二分查找 s-b[i],注意不要忘记计算速度为x时需要花费的最小时间,以及整数范围为64位整数 1 #include <cstd ...
- java 操作流的步骤
File类本身是与文件操作有关,但是如果要想操作内容则必须使用字节流或字符流完成,但是不管是使用何种的输入输出流,其基本的操作原理是一样的(以文件流为准): 一.使用File类找到一个文件对象,得到I ...
- P1093 铺地毯
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 \(n\) 张地毯,编号从 \(1\) 到 \(n\) .现在将这些地毯按 ...