Java学习笔记之:Java JDBC
一、介绍
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。
/**
* JDBC:文件驱动
* 1.引入jar包 ojdbc.jar 在工程的目录下创建一个lib文件夹用来存放jar包
* 在ojdbc14.jar这个文件上右键==>build Path==> add to build Path
* 2.编写DB类
* a.加载驱动
* b.设置参数url user pwd
* c.连接数据库
* d.编写sql语句
* e.编译sql语句
* f.如果存在条件
* 设置条件后执行sql语句,如果没有条件直接执行sql语句 g.如果是增删改 那么sql执行结束 如果是查询,遍历结果集 f.关闭数据库
*
*
*
*/
二、初始化
1.配置连接:在引入了ojdbc14.jar包之后,我们需要使用Class.forName方法加载驱动,然后通过DriverManager.getConnection来获取连接
// 初始化
public void init() {
// 不同的数据库有不同的驱动
String driverName = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.1.150:1521:XE";
String user = "hr";
String password = "123456"; try {
// 加载驱动
Class.forName(driverName);
// 设置 配置数据
// 1.url(数据看服务器的ip地址 数据库服务端口号 数据库实例)
// 2.user
// 3.password
conn = DriverManager.getConnection(url, user, password);
// 开始连接数据库
System.out.println("数据库连接成功..");
} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} }
2.初始化
Connection conn = null;
public static void main(String[] args) {
DB db = new DB();
db.init();
}
三、操作
如果我们需要操作数据,就需要一个容器来保存它,这里我们可以用javabean来保存他们。
public class Student {
private Integer id;
private String name;
private Integer age;
private Integer agestart;
private Integer ageend;
public Integer getAgestart() {
return agestart;
}
public void setAgestart(Integer agestart) {
this.agestart = agestart;
}
public Integer getAgeend() {
return ageend;
}
public void setAgeend(Integer ageend) {
this.ageend = ageend;
}
public Student() {
// TODO 自动生成的构造函数存根
}
public Student(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
1.简单的查询
public List<Student> select() throws SQLException {
List<Student> list = new ArrayList<Student>();
// *查询
// 创建sql语句
String sqlString = "select * from student";
// 编译sql语句
// 执行查询
pst = conn.prepareStatement(sqlString);
rSet = pst.executeQuery();
// 遍历结果
Student student = null;
while (rSet.next()) {
// System.out.print(rSet.getInt(1) + "\t");
// System.out.print(rSet.getString(2) + "\t");
// System.out.print(rSet.getInt(3) + "\t");
// System.out.print("\n");
student = new Student();
student.setId(rSet.getInt(1));
student.setName(rSet.getString(2));
student.setAge(rSet.getInt(3));
list.add(student);
}
return list;
}
List<Student> students = null;
students = db.select();
for (int i = 0; i < students.size(); i++) {
System.out.print(students.get(i).getId() + "\t");
System.out.print(students.get(i).getName() + "\t");
System.out.print(students.get(i).getAge());
System.out.println();
}
结果:

2.条件查询
public List<Student> selectByStu(int age) throws SQLException {
List<Student> students = new ArrayList<Student>();
String sql = "select * from student where sage=? ";
pst = conn.prepareStatement(sql);
// 设置条件(相对于条件查询)
pst.setInt(1, age);
rSet = pst.executeQuery();
Student student = null;
while (rSet.next()) {
student = new Student();
student.setId(rSet.getInt(1));
student.setName(rSet.getString(2));
student.setAge(rSet.getInt(3));
students.add(student);
}
return students;
}
students = db.selectByStu(20);
for (int i = 0; i < students.size(); i++) {
System.out.print(students.get(i).getId() + "\t");
System.out.print(students.get(i).getName() + "\t");
System.out.print(students.get(i).getAge());
System.out.println();
}
结果:

3.多个条件查询
public List<Student> selectByCondition(Student e) throws SQLException {
List<Student> students = new ArrayList<Student>();
String sql = "select * from student where sage>? and sage<? ";
pst = conn.prepareStatement(sql);
pst.setInt(1, e.getAgestart());
pst.setInt(2, e.getAgeend());
rSet = pst.executeQuery();
Student student = null;
while (rSet.next()) {
student = new Student();
student.setId(rSet.getInt(1));
student.setName(rSet.getString(2));
student.setAge(rSet.getInt(3));
students.add(student);
}
return students;
}
Student stu = new Student();
stu.setAgestart(20);
stu.setAgeend(22);
students = db.selectByCondition(stu); for (int i = 0; i < students.size(); i++) {
System.out.print(students.get(i).getId() + "\t");
System.out.print(students.get(i).getName() + "\t");
System.out.print(students.get(i).getAge());
System.out.println();
}

4.添加数据
public void save(Student student) throws SQLException {
String sql = "insert into student values (?,?,?,null,null,null,null,null)";
pst = conn.prepareStatement(sql);
pst.setInt(1, student.getId());
pst.setString(2, student.getName());
pst.setInt(3, student.getAge());
pst.executeUpdate();
System.out.println("添加成功");
}
5.更新数据
public void update(Student student) throws SQLException {
String sql = "update student set sage=? where sid=?";
pst = conn.prepareStatement(sql);
pst.setInt(1, student.getAge());
pst.setInt(2, student.getId());
pst.executeUpdate();
System.out.println("更新成功");
}
6.删除数据
public void delete(Integer id) throws SQLException {
String sql = "delete student where sid=?";
pst = conn.prepareStatement(sql);
pst.setInt(1, id);
pst.executeUpdate();
System.out.println("删除成功");
}
7.分页
public List<Student> findByPage(int start, int end) throws SQLException {
List<Student> students = new ArrayList<Student>();
String sql = "select s_.* from(select s.*,rownum rn from (select * from student order by sid) s where rownum<=?) s_ where rn>?";
pst = conn.prepareStatement(sql);
pst.setInt(1, end);
pst.setInt(2, start);
rSet = pst.executeQuery();
Student student = null;
while (rSet.next()) {
student = new Student();
student.setId(rSet.getInt(1));
student.setName(rSet.getString(2));
student.setAge(rSet.getInt(3));
students.add(student);
}
return students;
}
四、笔记
package com.hgd.study.JDBC; import java.net.CookieHandler;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; public class DB {
Connection conn = null;
PreparedStatement pst;
ResultSet rSet; public static void main(String[] args) {
DB db = new DB(); List<Student> students = null;
try {
db.initConn();
//students = db.select(); //students = db.selectByStu(20); Student stu = new Student();
stu.setAgestart(20);
stu.setAgeend(22);
students = db.selectByCondition(stu); for (int i = 0; i < students.size(); i++) {
System.out.print(students.get(i).getId() + "\t");
System.out.print(students.get(i).getName() + "\t");
System.out.print(students.get(i).getAge());
System.out.println();
} // Student stu = new Student(123, "李四", 23);
// db.save(stu); // Student stu=new Student();
// stu.setId(10003);
// stu.setAge(23);
// db.update(stu); // db.delete(123); /*
* 事物: 1.原子性:每一个事物都是一个单独的操作 2.一致性:事物中的所有操作,只要成功全部成功,一旦失败全部失败
* 3.隔离性:事物中的操作之间没不会产生影响他们都是一个独立的操作 4.持久性:事物一旦成功将被永久写入数据库
*/
// conn.setAutoCommit(false);// 设置自动事物为false
// conn.setSavepoint();// 设置事物的回滚点
// conn.rollback();//事物回滚
// conn.commit();//事物提交
// db.setAutoCommit(false);
// db.setSavepoint();
// Student stu = new Student();
// stu.setId(10003);
// stu.setAge(0);
// db.update(stu);
// if (stu.getAge() <= 0) {
// db.rollback();
// System.out.println("取消了操作");
// } else {
// db.commit();
// } } catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally {
try {
db.close();
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
} // 初始化
public void init() {
// 不同的数据库有不同的驱动
String driverName = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.1.150:1521:XE";
String user = "hr";
String password = "123456"; try {
// 加载驱动
Class.forName(driverName);
// 设置 配置数据
// 1.url(数据看服务器的ip地址 数据库服务端口号 数据库实例)
// 2.user
// 3.password
conn = DriverManager.getConnection(url, user, password);
// 开始连接数据库
System.out.println("数据库连接成功..");
} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} } public void initConn() throws Exception {
if (conn == null || conn.isClosed()) {
this.init();
}
} public void close() throws Exception {
if (conn != null && !conn.isClosed()) {
conn.close();
conn = null; }
} public void setAutoCommit(boolean fals) throws Exception {
if (conn != null && !conn.isClosed()) {
conn.setAutoCommit(fals);
}
} public void setSavepoint() throws Exception {
if (conn != null && !conn.isClosed()) {
conn.setSavepoint();
}
} public void rollback() throws Exception {
if (conn != null && !conn.isClosed()) {
conn.rollback();
}
} public void commit() throws Exception {
if (conn != null && !conn.isClosed()) {
conn.commit();
}
} // 简单查询
public List<Student> select() throws SQLException { List<Student> list = new ArrayList<Student>();
// *查询
// 创建sql语句
String sqlString = "select * from student";
// 编译sql语句
// 执行查询
pst = conn.prepareStatement(sqlString);
rSet = pst.executeQuery();
// 遍历结果
Student student = null;
while (rSet.next()) {
// System.out.print(rSet.getInt(1) + "\t");
// System.out.print(rSet.getString(2) + "\t");
// System.out.print(rSet.getInt(3) + "\t");
// System.out.print("\n");
student = new Student();
student.setId(rSet.getInt(1));
student.setName(rSet.getString(2));
student.setAge(rSet.getInt(3));
list.add(student); } return list;
} // 条件查询
public List<Student> selectByStu(int age) throws SQLException {
List<Student> students = new ArrayList<Student>();
String sql = "select * from student where sage=? "; pst = conn.prepareStatement(sql);
// 设置条件(相对于条件查询)
pst.setInt(1, age);
rSet = pst.executeQuery();
Student student = null;
while (rSet.next()) {
student = new Student();
student.setId(rSet.getInt(1));
student.setName(rSet.getString(2));
student.setAge(rSet.getInt(3));
students.add(student);
} return students;
} // 多个条件值查询
public List<Student> selectByCondition(Student e) throws SQLException {
List<Student> students = new ArrayList<Student>();
String sql = "select * from student where sage>? and sage<? ";
pst = conn.prepareStatement(sql);
pst.setInt(1, e.getAgestart());
pst.setInt(2, e.getAgeend());
rSet = pst.executeQuery();
Student student = null;
while (rSet.next()) {
student = new Student();
student.setId(rSet.getInt(1));
student.setName(rSet.getString(2));
student.setAge(rSet.getInt(3));
students.add(student);
}
return students;
} // 添加数据
public void save(Student student) throws SQLException {
String sql = "insert into student values (?,?,?,null,null,null,null,null)"; pst = conn.prepareStatement(sql);
pst.setInt(1, student.getId());
pst.setString(2, student.getName());
pst.setInt(3, student.getAge());
pst.executeUpdate();
System.out.println("添加成功");
} // 更新数据
public void update(Student student) throws SQLException {
String sql = "update student set sage=? where sid=?"; pst = conn.prepareStatement(sql);
pst.setInt(1, student.getAge());
pst.setInt(2, student.getId());
pst.executeUpdate();
System.out.println("更新成功");
} // 删除数据
public void delete(Integer id) throws SQLException {
String sql = "delete student where sid=?"; pst = conn.prepareStatement(sql);
pst.setInt(1, id);
pst.executeUpdate();
System.out.println("删除成功");
} // 分页
public List<Student> findByPage(int start, int end) throws SQLException {
List<Student> students = new ArrayList<Student>();
String sql = "select s_.* from(select s.*,rownum rn from (select * from student order by sid) s where rownum<=?) s_ where rn>?"; pst = conn.prepareStatement(sql);
pst.setInt(1, end);
pst.setInt(2, start);
rSet = pst.executeQuery();
Student student = null;
while (rSet.next()) {
student = new Student();
student.setId(rSet.getInt(1));
student.setName(rSet.getString(2));
student.setAge(rSet.getInt(3));
students.add(student);
}
return students;
} }
Java学习笔记之:Java JDBC的更多相关文章
- Java学习笔记36(jdbc快速入门)
JDBC: Java DataBase Connectivity 是java程序连接存取数据库的应用程序接口 (是sun公司的程序员定义的一套操作数据库的规则,然后下面的各个公司如:mysql,sql ...
- Java学习笔记47(JDBC、SQL注入攻击原理以及解决)
JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步 ...
- Java 学习笔记之读取jdbc.propertyes配置参数
package test; import java.io.IOException; import java.io.InputStream; import java.util.Properties; p ...
- Java 学习笔记(16)——Java数据库操作
数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...
- Java学习笔记之—Java基础
将学习到的JAVA基础用xmind记录了下来,需要原件的可以私信
- Java学习笔记--通过java.net.URLConnection发送HTTP请求
http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...
- java 学习笔记1 java语言概述及开发环境
高级语言运行机制 高级语言按程序的执行方式分为编译型和解释型两种. java语言比较特殊,Java程序的执行必须经过先编译后解释的步骤. 1 编译生成字节码,只面向JVM(.class) 2Jvm执行 ...
- Java 学习笔记 (三) Java 日期类型
以下内容摘自: https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...
- JAVA学习笔记之JAVA 对象引用以及赋值
关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没 ...
- 8.4(Java学习笔记)java脚本引擎(Rhino)
一.java脚本引擎 java脚本引擎是沟通java和脚本语句之间的桥梁,可以通过对应的脚本引擎在java中调用各种脚本语言. 二.脚本引擎执行脚本代码 ScriptEngineManager:为Sc ...
随机推荐
- 52.ISE中的PLL时钟输入
在manaul mode中选择PLL PLL的输入时钟可以是全局时钟,也可以是普通IO引脚. 1.PLL的输入时钟是全局时钟的情况. pll_xx pll_xx ( .clkin ( clkin ), ...
- VC++编程之对话框贴图
基于对话框的程序写好后,为对话框贴上个图片让界面更加美观(我承认做界面,MFC显得力不从心,不如QT). 其实很简单,我们以位图为例,选好我们需要的位图资源(bmp),假若自己的图片不是位图资源,可以 ...
- springboot注解
@RestController和@RequestMapping注解 我们的Example类上使用的第一个注解是 @RestController .这被称为一个构造型(stereotype)注解.它为阅 ...
- 增强学习————K-摇臂赌博机
探索与利用增强学习任务的最终奖赏是在多步动作之后才能观察到,于是我们先考虑最简单的情形:最大化单步奖赏,即仅考虑一步操作.不过,就算这样,强化学习仍与监督学习有显著不同,因为机器要通过尝试来发现各个动 ...
- php图形图像处理之生成验证码
\(^o^)/~ 现在网上越来越离不开验证码了,不知道小伙伴们知不知利用php的GD库就可以生成验证码,Σ(⊙▽⊙"a ...... 首先介绍几个需要用的函数. 1.imagesetpixe ...
- 使用AzCopy跨账户迁移blob
昨天北美紧急通知要停掉几个开发和测试的订阅,当天必须完成,因为事情比较多,搞得有点我措手不及,但是唯一的遗憾是Azure VM. 因为在上面做了很多东西,很多资料和环境都是做好的,如果被删除掉实在可惜 ...
- 我对GIT的理解
git是一个版本或项目代码管理工具.能够方便的管理多个开发人员共同协助开发的代码.在git的管理下,每个开发人员都能同时对项目进行开发,开发人员被划分成不同的分支,每个开发人员都能拥有自己的一个或者多 ...
- JS 学习笔记--11---内置对象(Global/Math)
练习中使用的浏览器是IE10,如果各位朋友有不同意见或者遇到浏览器不兼容问题,希望指正 1.内置对象的定义:有ECMAScript实现提供的.不依赖与宿主环境的对象,在ECMAScript运行之前就已 ...
- Matlab中diag函数注意事项
在给李X写SVD代码的时候注意到的. >> a = magic(3) a = 8 1 6 3 5 7 4 9 2 >> diag(a) ans = 8 5 2 >> ...
- SpringMVC:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax;
今天用SpringMVC做修改添加操作,之前的操作都实现了添加修改,但始终报com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have ...