Unit01: JDBC原理 、 JDBC基础编程
Unit01: JDBC原理 、 JDBC基础编程
这个文件里面有两块内容:
1.用比较麻烦的方式连接数据库,test1(),test4()
2.创建DBTool,测试DBTool连接数据库 ,test5(),test6(),
注意:这个案例中没有使用连接池。
package jdbc; import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; import org.junit.Test; import util.DBTool; /**
* Junit测试类,每个方法都能单独执行。
* 1.方法前加上@Test
* 2.方法是公有的,无返回值,无参
*/
public class TestDay01 { /**
* 1.创建连接
* 2.执行DML
*/
@Test
public void test1() {
System.out.println(1);
Connection conn = null;
try {
//1.加载驱动:告诉DriverManager
//我们想要使用哪个驱动类.
Class.forName(
"oracle.jdbc.driver.OracleDriver");
//2.调用DriverManager创建连接
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@192.168.201.227:1521:orcl",
"openlab", "open123");
System.out.println(conn);
//3.创建Statement
Statement smt = conn.createStatement();
//4.执行DML
//在JDBC中写SQL不能写结束符(;)
String sql =
"insert into emps_lhh values("
+ "emps_seq_lhh.nextval,"
+ "'悟空','职员',0,sysdate,"
+ "5000.0,1000.0,2)";
//返回增加(修改/删除)的行数
int rows = smt.executeUpdate(sql);
System.out.println(rows);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} /**
* 使用Properties读取db.peoperties
* 1.peoperties文件存储的是key-value
* 2.Properties类本质上就是Map,
* 专门用来读取properties文件.
*/
@Test
public void test4() {
Properties p = new Properties();
//1.获取任意类的类加载器
//2.类加载器从classes目录下读取文件
//3.db.properties刚好被编译到classes下
try {
p.load(TestDay01.class.getClassLoader()
.getResourceAsStream("db.properties"));
String driver = p.getProperty("driver");
System.out.println(driver);
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 1.测试DBTool
* 2.执行update语句
*/
@Test
public void test5() {
Connection conn = null;
try {
conn = DBTool.getConnection();
System.out.println(conn);
Statement smt = conn.createStatement();
String sql =
"update emps_lhh "
+ "set ename='刘备',"
+ "job='董事长',"
+ "sal=30000.0,"
+ "comm=90000.0 "
+ "where empno=1";
int rows = smt.executeUpdate(sql);
System.out.println(rows);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBTool.close(conn);
}
} /**
* 执行DQL语句
*/
@Test
public void test6() {
Connection conn = null;
try {
conn = DBTool.getConnection();
Statement smt = conn.createStatement();
String sql =
"select * from emps_lhh "
+ "where job='市场'";
//查询方法返回的是结果集对象,
//该对象中封装了数据库所返回的
//多行多列的数据.
ResultSet rs = smt.executeQuery(sql);
//结果集中有一个指针(变量),
//默认指向第一行之上(空值).
while(rs.next()) {
//每次next()会让指针向下移动一行,
//即变量+1.若该行有数据则返回true,
//否则返回false.
//从结果集某一行中取列的值:
//rs.get类型(字段名)
//rs.get类型(字段序号)
System.out.println(
rs.getInt("empno"));
System.out.println(
rs.getString("ename"));
System.out.println(
rs.getDouble("sal"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBTool.close(conn);
}
} }
DBTool.java文件,封装了连接数据库的功能
package util; import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties; public class DBTool { private static String driver;
private static String url;
private static String user;
private static String pwd; static {
//在类加载时只读取一次配置文件
Properties p = new Properties();
try {
p.load(DBTool.class.getClassLoader()
.getResourceAsStream("db.properties"));
driver = p.getProperty("driver");
url = p.getProperty("url");
user = p.getProperty("user");
pwd = p.getProperty("pwd");
//只需要加载一次驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(
"加载配置文件失败", e);
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(
"加载驱动类失败", e);
}
} /**
* 此处直接抛出SQLException,是为了强制
* 调用者去处理异常,从而避免其忘记写finally,
* 以及在finally当中关闭连接.
*/
public static Connection getConnection()
throws SQLException {
return DriverManager
.getConnection(url, user, pwd);
} public static void close(Connection conn) {
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(
"关闭连接失败", e);
}
}
} }
db.properties 文件,存放连接数据库的配置:
1.文件名必须以“properties”结尾;
2.文件里边不能有中文,注释也不能是中文;
# db connection parameters
# key=value
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@192.168.201.227:1521:orcl
user=openlab
pwd=open123
Unit01: JDBC原理 、 JDBC基础编程的更多相关文章
- JDBC原理
JDBC原理 JDBC是什么: Java Database Connectivity:Java访问数据库的解决方案 JDBC是Java应用程序访问数据库的里程碑式解决方案.Java研发者希望用相同 ...
- 一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)
JDBC全称又叫做Java DataBase Connectivity,就是Java数据库连接,说白了就是用Java语言来操作数据库.这篇文章主要是对JDBC的原理进行讲解.不会专注于其使用.主要是理 ...
- JDBC一(web基础学习笔记七)
一.JDBC Java数据库的连接技术(Java DataBase Connectivity),能实现Java程序以各种数据库的访问 由一组使用Java语言编写的类和接口(JDBC API)组成,它j ...
- 【JDBC】jdbc原理总结
1 什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库 ...
- JDBC三(web基础学习笔记九)
一.JDBC编程步骤 二.将数据库的信息放入资源文件 // (1)使用Class.forName来导入drive Class.forName("oracle.jdbc.driver.Orac ...
- jdbc原理与步骤
jdbc原理 1.加载JDBC驱动,并将其注册到DriverManager 2.建立数据库连接,获取connection对象 3.建立Statement对象或PreparedStatement对象 4 ...
- JDBC原理及常见错误分析
1.JDBC:Java DataBase Connectivity 可以为多种关系型数据库DBMS 提供统一的访问方式,用Java来操作数据库 2.JDBC API 主要功能: 三件事,具体是通过以下 ...
- Hadoop 综合揭秘——MapReduce 基础编程(介绍 Combine、Partitioner、WritableComparable、WritableComparator 使用方式)
前言 本文主要介绍 MapReduce 的原理及开发,讲解如何利用 Combine.Partitioner.WritableComparator等组件对数据进行排序筛选聚合分组的功能.由于文章是针对开 ...
- linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO(转载)
IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file ...
随机推荐
- ZOJ 2965 Accurately Say "CocaCola"!(预处理)
Accurately Say "CocaCola"! Time Limit: 2 Seconds Memory Limit: 65536 KB In a party he ...
- log4j2 输入日志到flume
最近想将服务的运行日志收集起来,首先了解到flume技术栈 采用flume方案定了之后有两种方式实现 1: 在应用中,log4j2直接发送日志信息到flume , 2: 通过监控log4j2 产生的日 ...
- 【LeetCode 104_二叉树_遍历】Maximum Depth of Binary Tree
解法一:递归 int maxDepth(TreeNode* root) { if (root == NULL) ; int max_left_Depth = maxDepth(root->lef ...
- Linux:网络配置
网络配置 1.网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth0 1DEVICE=eth0 2 HWADDR=00:0C:29:93:41:2B 3 ...
- AOP代理模式
AOP 在Spring框架中被作为核心组成部分之一,的确Spring将AOP发挥到很强大的功能.最常见的就是事务控制.工作之余,对于使用的工具,不免需要了解其所以然.学习了一下,写了些程序帮助理解. ...
- sql密码修改
首先,以window 认证登陆. 2 然后,在 安全性---->登录名---->sa.右击 选择属性.直接修改 星号密码即可. 3 然后 在右上角 文件--->链接对象资源管理器-- ...
- debug运行java程序报错
debug运行java程序报错 ERROR: transport error 202: connect failed: Connection timed out ERROR: JDWP Transpo ...
- 基于AMBA总线的SPI协议IP核的设计与验证
https://wenku.baidu.com/view/9542213131126edb6f1a1048.html?mark_pay_doc=2&mark_rec_page=1&ma ...
- 根据显示器的分辨率,加载不同CSS样式表
<link rel="stylesheet" type="text/css" id="css"><script langu ...
- 使用vue
使用bootstrap npm install bootstrap@3 --save 使用jQuery npm install jQuery --save ---------------- 搭建vue ...