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基础编程的更多相关文章

  1. JDBC原理

    JDBC原理   JDBC是什么: Java Database Connectivity:Java访问数据库的解决方案 JDBC是Java应用程序访问数据库的里程碑式解决方案.Java研发者希望用相同 ...

  2. 一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)

    JDBC全称又叫做Java DataBase Connectivity,就是Java数据库连接,说白了就是用Java语言来操作数据库.这篇文章主要是对JDBC的原理进行讲解.不会专注于其使用.主要是理 ...

  3. JDBC一(web基础学习笔记七)

    一.JDBC Java数据库的连接技术(Java DataBase Connectivity),能实现Java程序以各种数据库的访问 由一组使用Java语言编写的类和接口(JDBC API)组成,它j ...

  4. 【JDBC】jdbc原理总结

    1 什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库 ...

  5. JDBC三(web基础学习笔记九)

    一.JDBC编程步骤 二.将数据库的信息放入资源文件 // (1)使用Class.forName来导入drive Class.forName("oracle.jdbc.driver.Orac ...

  6. jdbc原理与步骤

    jdbc原理 1.加载JDBC驱动,并将其注册到DriverManager 2.建立数据库连接,获取connection对象 3.建立Statement对象或PreparedStatement对象 4 ...

  7. JDBC原理及常见错误分析

    1.JDBC:Java DataBase Connectivity 可以为多种关系型数据库DBMS 提供统一的访问方式,用Java来操作数据库 2.JDBC API 主要功能: 三件事,具体是通过以下 ...

  8. Hadoop 综合揭秘——MapReduce 基础编程(介绍 Combine、Partitioner、WritableComparable、WritableComparator 使用方式)

    前言 本文主要介绍 MapReduce 的原理及开发,讲解如何利用 Combine.Partitioner.WritableComparator等组件对数据进行排序筛选聚合分组的功能.由于文章是针对开 ...

  9. linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO(转载)

      IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file ...

随机推荐

  1. ZOJ 2965 Accurately Say "CocaCola"!(预处理)

    Accurately Say "CocaCola"! Time Limit: 2 Seconds      Memory Limit: 65536 KB In a party he ...

  2. log4j2 输入日志到flume

    最近想将服务的运行日志收集起来,首先了解到flume技术栈 采用flume方案定了之后有两种方式实现 1: 在应用中,log4j2直接发送日志信息到flume , 2: 通过监控log4j2 产生的日 ...

  3. 【LeetCode 104_二叉树_遍历】Maximum Depth of Binary Tree

    解法一:递归 int maxDepth(TreeNode* root) { if (root == NULL) ; int max_left_Depth = maxDepth(root->lef ...

  4. Linux:网络配置

    网络配置 1.网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth0 1DEVICE=eth0 2 HWADDR=00:0C:29:93:41:2B 3 ...

  5. AOP代理模式

    AOP 在Spring框架中被作为核心组成部分之一,的确Spring将AOP发挥到很强大的功能.最常见的就是事务控制.工作之余,对于使用的工具,不免需要了解其所以然.学习了一下,写了些程序帮助理解. ...

  6. sql密码修改

    首先,以window 认证登陆. 2 然后,在 安全性---->登录名---->sa.右击 选择属性.直接修改 星号密码即可. 3 然后 在右上角 文件--->链接对象资源管理器-- ...

  7. debug运行java程序报错

    debug运行java程序报错 ERROR: transport error 202: connect failed: Connection timed out ERROR: JDWP Transpo ...

  8. 基于AMBA总线的SPI协议IP核的设计与验证

    https://wenku.baidu.com/view/9542213131126edb6f1a1048.html?mark_pay_doc=2&mark_rec_page=1&ma ...

  9. 根据显示器的分辨率,加载不同CSS样式表

    <link rel="stylesheet" type="text/css" id="css"><script langu ...

  10. 使用vue

    使用bootstrap npm install bootstrap@3 --save 使用jQuery npm install jQuery --save ---------------- 搭建vue ...