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.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相关推荐
- Java学习笔记1:Java中有关print、println、printf的用法和区别
Java学习笔记1:Java中有关print.println.printf的用法和区别 最近在学习java,写一些笔记记录下. 1.print()函数是一般的标准输出,但是不换行. 2.println ...
- Java学习笔记(java基础)
Java学习笔记(第一周) Java 介绍 Java 发展方向 JVM , JDK , JRE 名词解释 Java语言的特点 Java安装 安装包的下载 配置环境变量 验证是否安装成功 Java的第一 ...
- 【java】java学习笔记之java oop(面向对象)
如下图所示为笔者总结的java oop(面向对象)学习笔记,其中,附带有代码示例(未展开),方便理解记忆.需要源文件的请到我的资源中下载,下载地址:https://download.csdn.net/ ...
- 【java】java学习笔记之java常用类
如下图所示为笔者总结的java常用类学习笔记,其中,附带有代码示例(未展开),方便理解记忆.需要源文件的请到我的资源中下载,下载地址:https://download.csdn.net/downloa ...
- Java 学习笔记(4)——java 常见类
上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...
- java学习笔记(一) ----java下常用的包功能
***java下常用的包*** java.lang----包含一些java语言的核心类,如String,Math,Integer,System,Thread,提供常用的功能. java.awt---- ...
- Java学习笔记-7.Java IO流
一.输入/输出流 1.流:不同类型的输入.输出源 数据流:输入或输出的数据 Java数据流的所有接口和类都是在java.io包中定义的,因此应在程序开头加入 import java.io.* 2 ...
- JAVA学习笔记 03 - JAVA语言程序结构
本文是Java基础课程的第三课.计算机语言的程序结构无外乎顺序结构.分支结构.循环结构,本文主要介绍Java语言中这些程序结构是如何实现的 文章目录 一.程序结构 二.分支结构 1.单分支if语句 2 ...
- Java学习笔记01—Java概述、数据类型、变量、标识符、类型转换
1. Java概述 1.1 Java语言发展史(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Uni ...
- java时间规划书_【计算机本科补全计划】Java学习笔记(九) Java日期时间
正文之前 终于好像仿佛看完了菜鸟教程的Java课程,感觉自己收获颇丰!很好,Java看完之后正愁如何开始进阶呢!结果发现菜鸟还准备了Java实例这种好东西!简直就是教程界的良心啊 !!!没事,先写写笔 ...
最新文章
- HDU4738(割点)
- vue.use无非就是为Vue对象注入新的方法和属性
- UA MATH567 高维统计专题1 稀疏信号及其恢复4 Basis Pursuit的算法 Projected Gradient Descent
- Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受
- ida调试linux程序,MAC使用IDA PRO远程调试LINUX程序
- 《动手学深度学习》 第二天 (线性回归)
- leetcode解题记录(二)
- 《Scikit-Learn与TensorFlow机器学习实用指南》第10章 人工神经网络介绍
- 芜湖计算机专业哪个学校最好,芜湖IT行业那么火,到底哪些人适合学IT呢?
- linux下直接复制文件内容到剪切板
- Nginx源码分析 - 基础数据结构篇 - 字符串结构 ngx_string.c(08)
- 【题解】Luogu P2157 [SDOI2009]学校食堂
- 通达OA清空admin管理员账号的密码
- 软件测试 (5) 数据库语句
- 论文中期报告要怎么写?
- 计算机应用毕业班主任鉴定,函授毕业生鉴定班主任鉴定范文.doc
- 2018-03-05 百度AI API说明
- 长城皮卡品牌CEO张昊保:皮卡是一个独特的品类,想玩门槛很高
- Latex输入矩阵的几种方式
- 《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):函数与图形化脚本
热门文章
- python安装步骤图解-Python安装与卸载流程详细步骤(图解)
- 用python画漂亮图片-Python 竟能绘制如此酷炫的三维图
- python怎么写文件-Python 读写文件
- python官网安装步骤-Python解释器的安装步骤
- 100个必会的python脚本-学会这个Python库,至少能减少100行代码
- python爬虫代码实例-Python爬虫爬取百度搜索内容代码实例
- python难学不-python难学吗-没有编辑基础可以学python吗?
- python解一元二次方程步骤-一元二次方程解法的实现(Python)
- python使用del保留字定义一个函数-Python使用什么保留字定义一个函数。
- 少儿python编程培训-厦门在线儿童编程课