作业: 1. 学生表(id,age,name) 2. 插入学生 3. 修改学生 4. 删除学生 5. 查询学生

JavaBean

俗称简单的Java对象 javaBean满足以下三点 1.私有属性 2.无参的构造方法 3.提供属性的set和get方法

-以后做项目,基本上有什么表,在代码中就需要创建相对应的对象,表中有什么字段,对象中就有什么属性

-创建set、get方法快捷键 先按 alt+shift+s 然后按r 然后alt+a 然后a松手换o然后回车 -创建toString方法快捷键 alt+sfit+s 然后 s 然后回车

CRUD

Create Retrieve Update Delete 增 查 改 删

实现删除 和 修改

批量操作batch

因为每次sql的执行都需要和数据库服务器进行数据交互,如果执行的sql太多,每次都和数据库交互太浪费资源, 可以通过批量操作的方式,把几次sql操作合并成一次 statement: 通常DDL使用statement stat.addBatch(sql1); stat.addBatch(sql2); stat.addBatch(sql3); int[] arr = stat.executeBatch(); prepareStatement: sql中带变量的 DML String sql = "insert into student values" + "(null,?,?)"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, 5); ps.setString(2, "悟空"); ps.addBatch(); ps.setInt(1, 6); ps.setString(2, "悟能"); ps.addBatch(); ps.setInt(1, 7); ps.setString(2, "悟净"); ps.addBatch(); int[] arr = ps.executeBatch();

-如何避免批量插入数据时内存溢出 for(int i=0;i<100000;i++{ ps.setInt(1,i*2); ps.setString(2,"a"+i); ps.addBatch(); if(i%20==0){ ps.executBatch(); ps.clearBatch(); } } ps.executBatch();

分页查询

在控制台输入 页数 和 每页的数量 如 输入页数是2 每页数量是10的话
查询到的是第11-20条数据

public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入页数"); int page = sc.nextInt(); System.out.println("请输入数量"); int count = sc.nextInt(); Connection conn = null; try { // 1 5 0 // 2 5 5 // 3 5 10 conn = DBUtils.getConn(); String sql = "select * from student" + " limit ?,?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, (page-1)*count); ps.setInt(2, count); ResultSet rs = ps.executeQuery(); while(rs.next()){ String name = rs.getString("name"); System.out.println(name); } rs.close(); ps.close();

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        DBUtils.closeConn(conn);
    }

}

事务

  1. 关闭自动提交 conn.setAutoCommit(false);
  2. 提交事务 conn.commit
  3. 回滚 conn.rollback;

实现转账流程:

1.创建 Person表 id money name 2.插入两条数据 1 500 超人 2 50000 蝙蝠侠 超人跟蝙蝠侠借1000 不借就干死你

代码: 先让超人 +1000 money = money+1000; 让蝙蝠侠 -1000 money = money-1000; 查询蝙蝠侠余额大于等0 如果余额小于0 则失败回滚 create table person (id int primary key auto_increment,money int, name varchar(10)); insert into person values(null,500,'超人'),(null,50000,'蝙蝠侠');

获取自增的主键值

conn = DBUtils.getConn();
        String sql = "insert into student values "
                ,'蜡笔小新')";
        Statement stat = conn.createStatement();
        stat.execute(sql,Statement.RETURN_GENERATED_KEYS);
        //得到返回的主键值
        ResultSet rs = stat.getGeneratedKeys();
        ;
        while(rs.next()){
            id );
        }
        System.out.println(id);

练习: -部门表插入一个部门同时 员工表插入一个员工 并且建立关系 参考代码

获取元数据

DataBaseMetadata:获取数据库的元数据 ResultSetMetadata:获取表的元数据

conn = DBUtils.getConn();

// DatabaseMetaData 保存的时和数据库相关的元数据 // DatabaseMetaData dbmd = conn.getMetaData();

 String sql = "select * from t_emp";
        Statement stat = conn.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        //得到表的元数据
        ResultSetMetaData md = rs.getMetaData();
        //获取表的字段数量
        int columCount = md.getColumnCount();
        ; i <= columCount; i++) {
            String columName = md.getColumnName(i);
            System.out.println(columName);
        }

jdbc学习笔记03的更多相关文章

  1. 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试

    机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...

  2. OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓

    本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...

  3. OpenCV 学习笔记03 findContours函数

    opencv-python   4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...

  4. JDBC 学习笔记(十一)—— JDBC 的事务支持

    1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...

  5. JDBC 学习笔记(十)—— 使用 JDBC 搭建一个简易的 ORM 框架

    1. 数据映射 当我们获取到 ResultSet 之后,显然这个不是我们想要的数据结构. 数据库中的每一个表,在 Java 代码中,一定会有一个类与之对应,例如: package com.gerrar ...

  6. JDBC 学习笔记(六)—— PreparedStatement

    1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...

  7. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

  8. JDBC学习笔记一

    JDBC学习笔记一 JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API. ODBC全称 Open Database Conn ...

  9. C++ GUI Qt4学习笔记03

    C++ GUI Qt4学习笔记03   qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...

随机推荐

  1. IO流之流的操作规律

    流的操作规律 IO流中对象很多,解决问题(处理设备上的数据时)到底该用哪个对象呢? 把IO流进行了规律的总结(四个明确): l  明确一:要操作的数据是数据源还是数据目的. 源:InputStream ...

  2. scss-注释

    在scss中有两种注释方式 原生css的注释多行注释: /* *  注释的内容 */ 单行注释:// 注释内容一致延续到行末. 在尽可能的情况下,多行注释会被保留在输出的CSS中,而单行注释会被删除.

  3. 详解nodejs中使用socket的私聊和公聊的办法

    详解nodejs中使用socket的私聊和公聊的办法 nodejs的应用中,关于socket应该是比较出彩的了,socket.io在github上有几万人的star,它的成功应该是不输于express ...

  4. 2015年创新工场校园招聘软件研发岗位笔试题目——矩阵旋转

    题目要求:给出一个NxN的矩阵,写出程序将该矩阵进行顺时针旋转90度 // matrixrotation.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h ...

  5. TortoiseGit客户端安装及使用(上传代码到git@osc

    用TortoiseGit客户端之前要下载安装git http://git-scm.com/download/win 下载完安装完就可以了,之后好像就用不上了,全交给TortoiseGit客户端了 第一 ...

  6. Swing入门学习

    工作以来,一直都是基于java web方向的开发,并没有java方向GUI相关的开发经验,不过好在之前用过winform开发.有了基础的套路,想来搞一下Swing也没有什么压力!到网上搜了一下相关的学 ...

  7. Business Component(BC)和Business Object(BO)

    Siebel应用架构的一个成功的地方就是在应用里引入了BC,BO的概念,从而使得几千张关系数据表能够按照业务的含义组织成业务对象,对于业务人员而言具有了业务上的含义,而不仅仅是从技术人员的观点来对待数 ...

  8. pnp4nagios 性能调优

    http://popozhu.github.io/2014/03/12/pnp4nagios%E7%9A%84%E5%B9%B6%E5%8F%91/ rrd目录分层 bulk模式 修改模板 修改/pr ...

  9. php 四种基本排序算法

    冒泡排序 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来. 第一轮:从第一个到最后一个冒泡比较,运行结果:最后一个最大 第二轮:从第一个到倒数第二个冒泡比较, 运行结果:最后一 ...

  10. 扫描FTP,保存文件

    1.需求:某公司ftp服务器中一个文件夹中有30个文件(文件名字是不同的),每五分钟产生一个新的文件,同时删除这三十个文件中最早产生的文件,该文件夹中始终保持30个文件. 现在需要采集一周的数据做研究 ...