一、介绍

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.passwordconn = 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.passwordconn = 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;}}

View Code

转载于:https://www.cnblogs.com/huguodong/p/5910859.html

Java学习笔记之:Java JDBC相关推荐

  1. Java学习笔记1:Java中有关print、println、printf的用法和区别

    Java学习笔记1:Java中有关print.println.printf的用法和区别 最近在学习java,写一些笔记记录下. 1.print()函数是一般的标准输出,但是不换行. 2.println ...

  2. Java学习笔记(java基础)

    Java学习笔记(第一周) Java 介绍 Java 发展方向 JVM , JDK , JRE 名词解释 Java语言的特点 Java安装 安装包的下载 配置环境变量 验证是否安装成功 Java的第一 ...

  3. 【java】java学习笔记之java oop(面向对象)

    如下图所示为笔者总结的java oop(面向对象)学习笔记,其中,附带有代码示例(未展开),方便理解记忆.需要源文件的请到我的资源中下载,下载地址:https://download.csdn.net/ ...

  4. 【java】java学习笔记之java常用类

    如下图所示为笔者总结的java常用类学习笔记,其中,附带有代码示例(未展开),方便理解记忆.需要源文件的请到我的资源中下载,下载地址:https://download.csdn.net/downloa ...

  5. Java 学习笔记(4)——java 常见类

    上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...

  6. java学习笔记(一) ----java下常用的包功能

    ***java下常用的包*** java.lang----包含一些java语言的核心类,如String,Math,Integer,System,Thread,提供常用的功能. java.awt---- ...

  7. Java学习笔记-7.Java IO流

    一.输入/输出流 1.流:不同类型的输入.输出源    数据流:输入或输出的数据 Java数据流的所有接口和类都是在java.io包中定义的,因此应在程序开头加入 import java.io.* 2 ...

  8. JAVA学习笔记 03 - JAVA语言程序结构

    本文是Java基础课程的第三课.计算机语言的程序结构无外乎顺序结构.分支结构.循环结构,本文主要介绍Java语言中这些程序结构是如何实现的 文章目录 一.程序结构 二.分支结构 1.单分支if语句 2 ...

  9. Java学习笔记01—Java概述、数据类型、变量、标识符、类型转换

    1. Java概述 1.1 Java语言发展史(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Uni ...

  10. java时间规划书_【计算机本科补全计划】Java学习笔记(九) Java日期时间

    正文之前 终于好像仿佛看完了菜鸟教程的Java课程,感觉自己收获颇丰!很好,Java看完之后正愁如何开始进阶呢!结果发现菜鸟还准备了Java实例这种好东西!简直就是教程界的良心啊 !!!没事,先写写笔 ...

最新文章

  1. HDU4738(割点)
  2. vue.use无非就是为Vue对象注入新的方法和属性
  3. UA MATH567 高维统计专题1 稀疏信号及其恢复4 Basis Pursuit的算法 Projected Gradient Descent
  4. Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受
  5. ida调试linux程序,MAC使用IDA PRO远程调试LINUX程序
  6. 《动手学深度学习》 第二天 (线性回归)
  7. leetcode解题记录(二)
  8. 《Scikit-Learn与TensorFlow机器学习实用指南》第10章 人工神经网络介绍
  9. 芜湖计算机专业哪个学校最好,芜湖IT行业那么火,到底哪些人适合学IT呢?
  10. linux下直接复制文件内容到剪切板
  11. Nginx源码分析 - 基础数据结构篇 - 字符串结构 ngx_string.c(08)
  12. 【题解】Luogu P2157 [SDOI2009]学校食堂
  13. 通达OA清空admin管理员账号的密码
  14. 软件测试 (5) 数据库语句
  15. 论文中期报告要怎么写?
  16. 计算机应用毕业班主任鉴定,函授毕业生鉴定班主任鉴定范文.doc
  17. 2018-03-05 百度AI API说明
  18. 长城皮卡品牌CEO张昊保:皮卡是一个独特的品类,想玩门槛很高
  19. Latex输入矩阵的几种方式
  20. 《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):函数与图形化脚本

热门文章

  1. python安装步骤图解-Python安装与卸载流程详细步骤(图解)
  2. 用python画漂亮图片-Python 竟能绘制如此酷炫的三维图
  3. python怎么写文件-Python 读写文件
  4. python官网安装步骤-Python解释器的安装步骤
  5. 100个必会的python脚本-学会这个Python库,至少能减少100行代码
  6. python爬虫代码实例-Python爬虫爬取百度搜索内容代码实例
  7. python难学不-python难学吗-没有编辑基础可以学python吗?
  8. python解一元二次方程步骤-一元二次方程解法的实现(Python)
  9. python使用del保留字定义一个函数-Python使用什么保留字定义一个函数。
  10. 少儿python编程培训-厦门在线儿童编程课