Java中hir_Java中数据库的使用基础
/**
* DBUtil封装了加载驱动的静态块,与数据库建立连接和关闭连接的静态方法
* 用来管理数据库的连接数据库的链接信息保存在属性文件中
* @author Administrator
*
*/
---------------------------------------------------------------------------------
package util;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import org.apache.commons.dbcp.BasicDataSource;
/**
* 封装了加载驱动的静态块,与数据库建立连接和关闭连接的静态方法
* 用来管理数据库的连接数据库的链接信息保存在属性文件中
* @author Administrator
*
*/
public class DBUtil {
public static void main(String[] args) throws Exception {
Connection conn = getConnection();
System.out.println(conn.getClass().getName());
close(conn);
}
private static BasicDataSource ds;
static {
try {
//加载属性文件数据
Properties prop = new Properties();
prop.load(DBUtil.class.getClassLoader().getResourceAsStream
("db.properties"));
String driverclass = prop.getProperty("jdbc.driverclass");
String url = prop.getProperty("jdbc.url");
String user = prop.getProperty("jdbc.user");
String password = prop.getProperty("jdbc.password");
String strMaxActive = prop.getProperty("dbcp.MaxActive");
String strInitialSize = prop.getProperty("dbcp.InitialSize");
//1、加载驱动
//实例化并初始化连接池。
ds = new BasicDataSource();
ds.setDriverClassName(driverclass);
ds.setUrl(url);
ds.setUsername(user);
ds.setPassword(password);
ds.setMaxActive(Integer.parseInt(strMaxActive));
ds.setInitialSize(Integer.parseInt(strInitialSize));
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("读取属性文件异常!",e);
}
}
//2、创建连接
/*
* 定义一个方法需要什么?
* 1、返回值类型:
* 是否有运算结果?如果有,结果的类型就是返回值类型。
* 2、参数列表:
* 方法中是否有不确定的参数参与运算?如果有,即为参数。
*/
public static Connection getConnection() throws SQLException{
return ds.getConnection();
}
//3、归还连接
public static void close(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("归还连接异常!",e);
}
}
}
}
属性文件:db.properties
jdbc.driverclass=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost :1521:xe
jdbc.user=system
jdbc.password=zjz1992
#dbcp param
dbcp.MaxActive=1
dbcp.InitialSize=1
----------------------------------------------------------------------------------------
package test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import util.DBUtil;
/**
* junit测试类:可以让满足条件的任意方法单独直接执行。
* 条件:
* 1.public
* 2.void
* 3.无参数
* 4.方法前必须加@Test
* @author Administrator
*
*/
public class Test {
/**
* 根据ID查询员工
*/
@Test
public void test1(){
//假设传入的员工ID是1:
int id = 1;
//创建连接
Connection con = null;
try {
con = DBUtil.getConnection();
String sql =
"SELECT * FROM emp "
+ "WHERE empno=" + id;
Statement smt = con.createStatement();
//执行查询
ResultSet rs = smt.executeQuery(sql);
//结果集中封装了多行数据,需要遍历
while(rs.next()){
/* 查询列的两个方法
* rs.get类型(字段名)
* rs.get类型(字段索引)
*/
System.out.println(rs.getString("empno"));
System.out.println(rs.getInt("empno"));
}
} catch (SQLException e) {
//1.记录日志
e.printStackTrace();
//2.能处理则自己处理(入返回默认值)
//3.处理不了则上报(向上抛)
throw new RuntimeException("查询员工失败!",e);
}finally{
//归还连接
DBUtil.close(con);
}
}
----------------------------------------------------------------------------------------
public class Test {
/*
* PreparedStatement查询
* 查询工资高于某值的所有员工。
*/
@Test
public void test1(){
//假设传入的工资
double salary = 4500.00;
Connection con = null;
try {
//1.创建连接
con = DBUtil.getConnection();
String sql =
"SELECT ename FROM emp "
+ "WHERE sal>?";
/*
* 创建PreparedStatement对象
* 发送SQL并建立执行计划
*/
PreparedStatement ps = con.prepareStatement(sql);
/*
* 设置参数
* ps.set类型(?的索引,?的值)
*/
ps.setDouble(1, salary);
//执行SQL
ResultSet rs = ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString("ename"));
//System.out.println(rs.getInt("ename"));
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("查询员工失败!",e);
} finally {
DBUtil.close(con);
}
}
/**
* 演示PreparedStatemende增加
*/
@Test
public void test2(){
//假设用户传入了如下要添加的数据
String ename = "唐僧";
String job = "领导";
int mgr = 0;
Date date = new Date(System.currentTimeMillis());
double sal = 9000.00;
double comm = 3000.0;
int depton = 2;
Connection con = null;
try {
con = DBUtil.getConnection();
String sql =
"INSERT INTO emp "
+ "VALUES(seq_emp.nextval,?,?,?,?,?,?,?) ";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, ename);
ps.setString(2, job);
ps.setInt(3, mgr);
ps.setDate(4, date);
ps.setDouble(5, sal);
ps.setDouble(6, comm);
ps.setInt(7, depton);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("查询员工失败!",e);
} finally {
DBUtil.close(con);
}
}
/**
* 演示PreparedStatemende修改
*/
@Test
public void test3(){
//假设用户传入了如下要修改的数据
int empno = 101;
String ename = "悟空";
String job = "保镖";
int mgr = 101;
Date date = new Date(System.currentTimeMillis());
double sal = 5000.00;
double comm = 0;
int depton = 2;
Connection con = null;
try {
con = DBUtil.getConnection();
String sql =
"UPDATE emp "
+ "SET ename=?, "
+ "job=?, "
+ "mgr=?, "
+ "hirdate=?, "
+ "sal=?, "
+ "comm=?, "
+ "depton=? "
+ "WHERE empno=? ";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, ename);
ps.setString(2, job);
ps.setInt(3, mgr);
ps.setDate(4, date);
ps.setDouble(5, sal);
ps.setDouble(6, comm);
ps.setInt(7, depton);
ps.setInt(8, empno);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("修改员工失败!",e);
} finally {
DBUtil.close(con);
}
}
/**
* 演示PreparedStatemende删除
*/
@Test
public void test4(){
//假设要删除的员工的id为
int empno = 102;
Connection con= null;
try {
con = DBUtil.getConnection();
String sql = "DELETE FROM emp "
+ "WHERE empno=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, empno);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("删除员工失败!",e);
}finally{
DBUtil.close(con);
}
}
}
Java中hir_Java中数据库的使用基础相关推荐
- java中选择性插入数据库,选中java数据
Openfire开发配置,Openfire源代码配置,OpenFire二次开发配置 1.下载源代码:http://www.igniterealtime.org/downloads/source.jsp ...
- idea中链接mysql查询_在Idea中编写Java程序连接查询Sqlite数据库
1.使用SqliteSpy建立好数据库文件SqliteSpy运行界面 2.准备好一个空文件夹存放java工程和数据库文件,准备好数据库驱动jar包拷贝到文件夹中sqlite数据库文件和驱动 3.在Id ...
- Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net...
Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net 1. -catalog与schema的设计区别1 ...
- Java嵌入式数据库H2学习总结(三)——在Web应用中嵌入H2数据库
H2作为一个嵌入型的数据库,它最大的好处就是可以嵌入到我们的Web应用中,和我们的Web应用绑定在一起,成为我们Web应用的一部分.下面来演示一下如何将H2数据库嵌入到我们的Web应用中. 一.搭建测 ...
- java代码连接oracle数据库连接_在JAVA中连接Oracle数据库(例子)
* TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql ...
- Java web程序中备份oracle数据库
Java web程序中备份oracle数据库 1.生成备份文件: public ActionForward createDmp(ActionMapping mapping, ActionForm fo ...
- 获取mysql可行方法_Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法...
<Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法>要点: 本文介绍了Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法,希望对您有用.如果有 ...
- 基于Java线程池读取数据库中数据(学习+运用)
基于Java线程池读取数据库中数据(学习+运用) 以下是学习内容 Main.java import java.util.concurrent.ArrayBlockingQueue; import ja ...
- Java 8流中的数据库CRUD操作
在开始使用新工具时要克服的最大障碍是让您着手处理小事情. 到目前为止,您可能对新的Java 8 Stream API的工作方式充满信心,但是您可能尚未将其用于数据库查询. 为了帮助您开始使用Strea ...
最新文章
- Matlab字符串的基本操作
- SpringBoot Bean配置
- 查看Linux命令_搜索Linux命令_查找Linux命令
- win8 必须重新启动计算机才能关闭用户账户控制,windows8中怎么关闭用户账户控制(UAC)仅针对单个用户...
- service nginx start启动nginx出现Failed to start nginx.service:unit not found
- lm_license_file 冲突怎么办_【微课+语音】孩子一个多月没有上学了怎么办?
- 如何有效创建工作分解结构?
- Sublime Text下载使用
- 安装keil5时,注册机在解压后消失的解决以及使用注册机破解keil5时,无法破解
- 解决mysql插入中文出现错误ERROR 1366 (HY000): Incorrect string value: ‘\x80\x85\xEF\xBC\x8C\xE6...‘ for column
- python sep参数_Python sep参数使用方法详解
- 【EC200U】 基站定位
- android hierarchyViewer 的UI工具的使用
- hihoCoder1290. Demo Day
- 实现火车站售票的例子
- 江哥带你玩转C语言| 12 -二维数组和字符串
- 单商户商城和多商户商城系统的区别
- 信号处理中简单实用的方法——提取信号中的包络
- 深度学习2---任意结点数的三层全连接神经网络
- 来这里,实现高薪就业梦想。