jdbc学习笔记03
作业: 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);
}
}
事务
- 关闭自动提交 conn.setAutoCommit(false);
- 提交事务 conn.commit
- 回滚 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的更多相关文章
- 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试
机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...
- OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓
本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...
- OpenCV 学习笔记03 findContours函数
opencv-python 4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...
- JDBC 学习笔记(十一)—— JDBC 的事务支持
1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...
- JDBC 学习笔记(十)—— 使用 JDBC 搭建一个简易的 ORM 框架
1. 数据映射 当我们获取到 ResultSet 之后,显然这个不是我们想要的数据结构. 数据库中的每一个表,在 Java 代码中,一定会有一个类与之对应,例如: package com.gerrar ...
- JDBC 学习笔记(六)—— PreparedStatement
1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...
- JDBC学习笔记二
JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...
- JDBC学习笔记一
JDBC学习笔记一 JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API. ODBC全称 Open Database Conn ...
- C++ GUI Qt4学习笔记03
C++ GUI Qt4学习笔记03 qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...
随机推荐
- 一次完整的HTTP事务过程
基本流程: a. 域名解析 b. 发起TCP的3次握手 c. 建立TCP连接后发起http请求 d. 服务器端响应http请求,浏览器得到html代码 e. 浏览器解析html代码,并请求html代码 ...
- angular - webpack2 例子
用一周多的时间做了一个简易的wap站 之前研究过webpack但是一直没用过,这次公司要做一个h5网站,正好拿来练练手,话说angular1x对移动端不是很友好,但主要是angular1x比较熟悉,上 ...
- SSM整合的简单实现
整合需要的jar包和源码将在文末给出 本文参考黑马程序员视频,由于视频用的环境和我使用的环境不同,建议使用我的环境及jar包(比较新) 一 整合思路 第一步 整合dao层 mybatis和spring ...
- 时间序列算法理论及python实现(1-算法理论部分)
如果你在寻找时间序列是什么?如何实现时间序列?那么请看这篇博客,将以通俗易懂的语言,全面的阐述时间序列及其python实现. 就餐饮企业而言,经常会碰到如下问题. 由于餐饮行业是胜场和销售同时进行的, ...
- C++ double 小数精度控制
第一种方法:cout<<fixed<<setprecision(20)<<mydouble<<endl; #include <iostream&g ...
- 关于表空间、Schema和用户
数据库这个柜子 解释数据库.表空间.数据文件.表.数据的最好办法就是想象一个装满东西的柜子. 从物理方面来讲:数据库是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信 ...
- ACM-ICPC (10/15) Codeforces Round #440 (Div. 2, based on Technocup 2018 Elimination Round 2)
A. Search for Pretty Integers You are given two lists of non-zero digits. Let's call an integer pret ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 4 - Find Integer 【费马大定理+构造勾股数】
Find Integer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- Spring Boot 配置文件详解:Properties和YAML
一.配置文件的生效顺序,会对值进行覆盖: 1. @TestPropertySource 注解 2. 命令行参数 3. Java系统属性(System.getProperties()) 4. 操作系统环 ...
- C# 动态改变webservice的访问地址
1.添加一个App.config配置文件. 2.配置服务http://Lenovo-PC:80/EvisaWS/WharfService?wsdl,那么在上面的文件中就会自动生成服务的配置: < ...