一、介绍

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的更多相关文章

  1. Java学习笔记36(jdbc快速入门)

    JDBC: Java DataBase Connectivity 是java程序连接存取数据库的应用程序接口 (是sun公司的程序员定义的一套操作数据库的规则,然后下面的各个公司如:mysql,sql ...

  2. Java学习笔记47(JDBC、SQL注入攻击原理以及解决)

    JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步 ...

  3. Java 学习笔记之读取jdbc.propertyes配置参数

    package test; import java.io.IOException; import java.io.InputStream; import java.util.Properties; p ...

  4. Java 学习笔记(16)——Java数据库操作

    数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...

  5. Java学习笔记之—Java基础

    将学习到的JAVA基础用xmind记录了下来,需要原件的可以私信

  6. Java学习笔记--通过java.net.URLConnection发送HTTP请求

    http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...

  7. java 学习笔记1 java语言概述及开发环境

    高级语言运行机制 高级语言按程序的执行方式分为编译型和解释型两种. java语言比较特殊,Java程序的执行必须经过先编译后解释的步骤. 1 编译生成字节码,只面向JVM(.class) 2Jvm执行 ...

  8. Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

  9. JAVA学习笔记之JAVA 对象引用以及赋值

      关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没 ...

  10. 8.4(Java学习笔记)java脚本引擎(Rhino)

    一.java脚本引擎 java脚本引擎是沟通java和脚本语句之间的桥梁,可以通过对应的脚本引擎在java中调用各种脚本语言. 二.脚本引擎执行脚本代码 ScriptEngineManager:为Sc ...

随机推荐

  1. 解决SQLite数据库中文乱码问题

      关于SQLite中出现中文乱码的分析以及解决方案 我们在使用SQLite数据库时候,可能会发现,向数据库插入数据时候显示的是汉字,但通过SQLite读出来时却显示的乱码,这是因为SQLite数据库 ...

  2. copy-mutableCopy

    copy和mutableCopy语法的目的:改变副本的时候,不会影响到源对象:调用Copy产生的对象是不可变的,调用mutableCopy产生的对象是可变的,与调用对象是否可变无关. Copy 需要先 ...

  3. c语言学习strcopy

    自己写了一个字符串复制函数: #include<stdio.h> #include<assert.h> char *mystrcpy(char *des,char *ser) ...

  4. Using sql azure for Elmah

    The MSDN docs contain the list of T-SQL that is either partially supported or not supported.  For ex ...

  5. mac os 10.10上安装my eclipse显示virtual memory不足,解决方案

    mac os 10.10上安装my eclipse显示virtual memory不足,安装失败. 自从把OS 升级到10.10 之后, 各种问题, 安装的时候向导提示提示我们说没有足够的虚拟内存, ...

  6. curl get started

    -v 显示整个通信过程 -L 自动处理目标网址的自动跳转如301跳转 -i 显示头部信息 -d 发送表单信息 -X HTTP动词 -F 文件上传 -A User Agent字段 -b cookie - ...

  7. 【CentOS】设置静态IP

      问题描述:         CentOS配置静态IP   问题解决:         (1)修改IP--修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth ...

  8. js添加事件、移除事件、阻止冒泡、阻止浏览器默认行为等写法(兼容IE/FF/CHROME)

    转自:http://blog.csdn.net/itchiang/article/details/7769341 添加事件   var addEvent = function( obj, type, ...

  9. PowerDesigner(七)-数据库的生成和修改(转)

    数据库的生成和修改 使用ODBC接口连接数据库 访问数据库 预测数据库大小 生成数据库及数据库对象 PDM与用户数据库的同步 使用测试数据 暂不详述.

  10. SOA之(2)——SOA架构基础概念与设计框架

    SOA的设计框架 设计框架与架构相关的概念紧密相连,原则.模式和架构始终是与设计共舞的. SOA服务设计的原则中记录了一个基础的设计框架: 设计特性(Design Characteristic)——由 ...