Java jdbc 操作数据库详解
原文地址https://www.cnblogs.com/huguodong/p/5910859.html
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。
![](https://common.cnblogs.com/images/copycode.gif)
- /**
- * 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.关闭数据库
- *
- *
- *
- */
![](https://common.cnblogs.com/images/copycode.gif)
二、初始化
1.配置连接:在引入了ojdbc14.jar包之后,我们需要使用Class.forName方法加载驱动,然后通过DriverManager.getConnection来获取连接
![](https://common.cnblogs.com/images/copycode.gif)
- // 初始化
- 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();
- }
- }
![](https://common.cnblogs.com/images/copycode.gif)
2.初始化
![](https://common.cnblogs.com/images/copycode.gif)
- Connection conn = null;
- public static void main(String[] args) {
- DB db = new DB();
- db.init();
- }
![](https://common.cnblogs.com/images/copycode.gif)
三、操作
如果我们需要操作数据,就需要一个容器来保存它,这里我们可以用javabean来保存他们。
![](https://common.cnblogs.com/images/copycode.gif)
- 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;
- }
- }
![](https://common.cnblogs.com/images/copycode.gif)
1.简单的查询
![](https://common.cnblogs.com/images/copycode.gif)
- 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;
- }
![](https://common.cnblogs.com/images/copycode.gif)
![](https://common.cnblogs.com/images/copycode.gif)
- 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();
- }
![](https://common.cnblogs.com/images/copycode.gif)
结果:
2.条件查询
![](https://common.cnblogs.com/images/copycode.gif)
- 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;
- }
![](https://common.cnblogs.com/images/copycode.gif)
![](https://common.cnblogs.com/images/copycode.gif)
- 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();
- }
![](https://common.cnblogs.com/images/copycode.gif)
结果:
3.多个条件查询
![](https://common.cnblogs.com/images/copycode.gif)
- 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;
- }
![](https://common.cnblogs.com/images/copycode.gif)
![](https://common.cnblogs.com/images/copycode.gif)
- 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();
- }
![](https://common.cnblogs.com/images/copycode.gif)
4.添加数据
![](https://common.cnblogs.com/images/copycode.gif)
- 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("添加成功");
- }
![](https://common.cnblogs.com/images/copycode.gif)
5.更新数据
![](https://common.cnblogs.com/images/copycode.gif)
- 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("更新成功");
- }
![](https://common.cnblogs.com/images/copycode.gif)
6.删除数据
![](https://common.cnblogs.com/images/copycode.gif)
- 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("删除成功");
- }
![](https://common.cnblogs.com/images/copycode.gif)
7.分页
![](https://common.cnblogs.com/images/copycode.gif)
- 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;
- }
![](https://common.cnblogs.com/images/copycode.gif)
四、笔记
![](https://common.cnblogs.com/images/copycode.gif)
- 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;
- }
- }
![](https://common.cnblogs.com/images/copycode.gif)
Java jdbc 操作数据库详解的更多相关文章
- JAVA采用JDBC连接操作数据库详解
JDBC连接数据库概述 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...
- java jdbc操作数据库通用代码
1.准备工作 1> 新建一个配置文件,名为jdbc.properties将其放入src中 2>在项目中导入jdbc驱动,注意连接不同的数据库,所用到的驱动是不一样的,这些在网上都能找到 具 ...
- JAVA连接各种数据库详解
Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成.JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序.然而各个开 ...
- jdbc 操作步骤详解
package com.itheima.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql ...
- JAVA通过JDBC连接Oracle数据库详解【转载】
JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...
- Java笔记(第七篇 JDBC操作数据库)
JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...
- Java基础之原生JDBC操作数据库
前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...
- 《Tomcat与Java Web开发技术详解》思维导图
越想构建上层建筑,就越觉得底层基础很重要.补课系列. 书是良心书,就是太基础了,正适合补课. [纯文字版] Tomcat与Java Web开发技术详解 Servlet Servlet的生命周期 初始化 ...
- Java编程配置思路详解
Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...
随机推荐
- 题目1441:人见人爱 A ^ B(二分求幂)
题目链接:http://ac.jobdu.com/problem.php?pid=1441 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- vue过滤动画
一.使用<transition name="fade"></transition>标签 name="fade", 是创建个fade的类名 ...
- Unity3D Android动态反射加载程序集
这种办法在iOS下是不让用的,只能在Android下用.用起来也很方便了. 1.先创建一个c#工程,引用到的UnityEngine.dll在Unity的安装目录里找吧 2.将编译的dll放入Unity ...
- CentOS 添加环境变量
1.修改环境变量需要修改/etc/profile export PATH="$PATH:/usr/src/ruby-1.9.3-p0/ruby:/usr/local/bin/gem&qu ...
- Call removeView() on the child's parent first
extends:http://stackoverflow.com/questions/6526874/call-removeview-on-the-childs-parent-first Except ...
- Unity3D笔记 英保通三 脚本编写 、物体间通信
一.脚本编写 1.1.同一类型的方法JS和C#的书写方式却不一样主要还是语法,在工程中创建一个Cube 分别把JSTest.js和CSharp.cs 添加到Cube中 JSTest.js #pragm ...
- Java虚拟机九 java.lang.String在虚拟机中的实现
在Java中,Java的设计者对String对象进行了大量的优化,主要有三个特点: 1.不变性: 不变性是指String对象一旦生成,则不能再对它进行改变.String的这个特点可以泛化成不变(imm ...
- HDU 2829 - Lawrence - [斜率DP]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2829 T. E. Lawrence was a controversial figure during ...
- CCCC L2-017. 人以群分 贪心
https://www.patest.cn/contests/gplt/L2-017 题解:贪心,一点小数学 坑:XJB改下标改错了 #include <iostream> #includ ...
- UIGestureRecognizer和UITouch
UIGestureRecognizer和UITouch是分别判断的,如果判定了是手势,那就不再触发UITouch事件,如果两者并存,则会先执行UITouch事件,之后如果确认是手势,不再执行UITou ...