Java-JDBC-连接数据库

数据库

  • 数据库是一种数据存储结构,它允许使用各种格式输入、处理和检索数据——不必在每次需要数据时重新输入它们。
  • 数据库具有以下主要特点:
    • 实现数据共享。
    • 减少数据的冗余度。
    • 数据的独立性。
    • 数据实现集中控制。
    • 数据的一致性和可维护性,以确保数据安全和可靠。
    • 数据库的种类及功能
  • 数据库的种类及功能
    数据库系统一般基于某种数据模型,可以分为层次型、网状型、关系型及面向对象型等。

SQL语言

SQL(Structure Query Language,结构化查询语言)被广泛地应用关系数据库中,使用SQL语言可以方便地查询、操作、定义和控制数据库中的数据。SQL语言主要由以下几部分组成。
数据定义语言(Data Definition Language,DDL),如create、alter、drop等。
数据库查询语言( Data Query Language ,DQL), 如select
数据操纵语言(Data Manipulation Language,DML),如、insert、update、delete等。
数据控制语言(Data Control Language,DCL),如grant、revoke等。
事务控制语言(Transaction Control Language),如commit、rollback等。
指针控制语言(CCL):指针控制语言 DECLARE CURSOR

常用SQL语句简介

  • select语句:
    Seclect [所选字段列列举] from 表名 where 条件表达式 group by
    字段 order by 字段[ASC|DESC]
    如:select * from users_tb where sex=‘女’ oredr by age;
  • insert语句:
    insert into 表名[字段名1,字段名2……] values(值1,值2……);
    如:insert into user(id,name,sex,age) values(2,‘lili’,’女’,20);
  • update语句:
    update 表名 set 字段名= 值 where 条件表达式
    如:update user_tb set age =24 where id=2;
  • delete语句:
    delete from 表名 where 条件表达式

连接数据库

mysq1-uroot -p123456   --连接数据库
update mysql.user set authentication_string=password('123456') where user='root'and Host = 'Toca1host'; --修改用户密码
flush privileges; --刷新权限
----------------------------
--所有的语句都使用;结尾
show databases;    --查看所有的数据库mysq1>use school   --切换数据库use数据库名
Database changedshow tab1es;--查看数据库中所有的表
describe student;--显示数据库中所有的表的信息create database westos;--创建一个数据库
exit; --退出连接
--单行注释(SQL的本来的注释)
/*
(sq1的多行注释
helloi
asdas
dasdas
*/

操作数据库

  • 1、创建数据库
CREATE DATABASE [IF NOT EXISTS]westos;
  • 2、删除数据库
DROP DATABASE [IF EXISTS] westos
  • 3、使用数据库
--tab键的上面,如果你的表名或者字段名是一个特殊字符,就需要带
USE school
  • 4、查看数据库
SHOW DATABASES--查看所有的数据库

数据库的列数据

  • 数值
tinyint		 十分小的数据	 1个字节
smallint 	 较小的数据	 	 2个字节
mediumint	 中等大小的数据	 3个字节
int			 标准的整数 		 4个字节 常用的int
bigint 		 较大的数据 		 8个字节
float 		 浮点数 			 4个字节
double		 浮点数 			 8个字节 (精度问题!)
decimal 	字符串形式的浮点数 金融计算的时候,一般是使用decimal
  • 字符串
char 		字符串固定大小的0~255
varchar 	可变字符串 0~65535 	常用的变量 String
tinytext 	微型文本 2^8-1
text	 	文本串 2^16-1 		保存大文本
  • 时间日期

java.util.Date

date YYY-MM-DD,日期格式
time HH:mm:ss 时间格式
·datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
·timestamp时间戳,1970.1.1到现在的毫秒数!也较为常用!
·year年份表示
  • null
    没有值,未知
    注意,不要使用NULL进行运算,结果为NULL

数据库的字段属性(重点)

  • Unsigned:
    无符号的整数
    声明了该列不能声明为负数
  • zerofill
    0填充的
    不足的位数,使用0来填充,int(3),5->005
  • 自增:
    通常理解为自增,自动在上一条记录的基础上+1(默认)
    通常用来设计唯一的主键~index,必须是整数类型
    可以自定义设计主键自增的起始值和步长
  • 非空NUll not null
    假设设置为not nul川,如果不给它赋值,就会报错!
    NUll,如果不填写值,默认就是ul!
  • 默认:
    设置默认的值!
    SX,默认值为男,如果不指定该列的值,则会有默认的值!

JDBC技术

JDBC的全称是Java DataBase Connectiviry,是一套面向对象的应用程序接口,指定了统一的访问各种关系型数据库的标准接口。JDBC是一种底层的API,因此访问数据库时需要在业务逻辑层中嵌入SQL语句。

  • JDBC技术主要完成以下几个任务:
    1. 与数据库建立一个连接。
    2. 向数据库发送SQL语句。
    3. 处理从数据库返回的结果。
      需要注意的是,JDBC并不能直接访问数据库,必须依赖于数据库厂商提供的JDBC驱动程序。

JDBC驱动程序的类型

  • JDBC的总体结构由4个组件——应用程序、驱动程序管理器、驱动程序数据源组成
  • JDBC驱动基本上分为以下4种。
    1. JDBC-ODBC桥:JDK提供的标准API
    2. JDBC本地API:把JDBC调用转成数据库的标准调用
    3. JDBC网络驱动: 第三方通过中间件来访问数据库
    4. 本地协议驱动:基于Java编写的驱动程序类(最常用)

JDBC常用接口: Connection接口

Connection接口代表与特定的数据库的连接。
要对数据表中数据进行操作,首先要获取数据库连接。创建连接后,Connection实例就像在应用程序与数据库之间开通了一条渠道。

JDBC常用类:DriverManager类

DriverManager类用来管理数据库中的所有驱动程序。
DriverManager类中的方法都是静态方法。
应用程序加载完驱动程序后,可以调用该类的
getConnection方法来获取数据库的链接对象。
如:Connection con = DriverManger.getConection(dbURl,dbUserName,dbPSW);

连接数据库步骤

1、加载数据库的驱动程序(只需要在第一次访问数据库时加载一次)
语法: Class.forName(String DriverName);
如:

 String jdbcDriver ="com.mysql.jdbc.Driver";Class.forName(jdbcDriver);

2、创建一个连接(Connection对象)
Connection con = DriverManager.getConnection (String dbUrl,String dbUserName,String dbPsw);如:

String dbUrl ="jdbc:mysql://localhost:3306/db_books";//数据库地址
String dbUserName ="root"; //用户名
String dbPsw = "123456"; //密码
Connection con = DriverManager.getConnection(dbUrl,dbUserName,dbPsw);

JDBC常用接口: Statement接口

Statement接口用于创建向数据库中传递静态SQL语句的对象,该接口规定了一些可以实现对数据库的常用操作方法。Statement接口的常用方法如下表所
在这里插入图片描述

使用Statement

要执行SQL语句首先要获得Statement/PreparedStatement类象。通过创建的连接数据库对象con的createStatement()方法可获得
Statement对象。
Statement stm = con.creatStatment(); //获取接口实现类的实例
stm.excuteQuery(String SqlStr);//像数据库发送sql
stm.excuteUpdate (String SqlStr);//向数据库发送sql

JDBC常用接口: PreparedStatement接口

向数据库发送一个SQL语句,数据库中的SQL解释器负责把SQL语句生成底层的内部命令,然后执行该命令,完成相关的数据操作。如果不断地向数据库提交SQL语句,肯定会增加数据库中SQL解释器的负担,影响执行的速度。
解决办法,使用PreparedStatment替代Statement对象,对SQL语句预处理。
PreparedStatement支持通配符 “?”。
PreparedStatement接口继承Statement,用于执行动态的SQL语句,通过PreparedStatement实例执行的SQL语句,将被预编译并保存到PreparedStatement实例中。从而可以反复地执行该SQL语句。
在这里插入图片描述

使用PreparedStatement

1、获取PreparedStatment对象:
String sqlStr =select * from user where age=?,sex=?;
PreparedStatement pstm = con.PrepareStatement(String sqlStr);
2、 设置参数
pstm.setInt(1,25);//设置第一通配符 的值为整型 25;
pstm.setString(2,“女”);//
3、执行 :pstm.executeQuery/executeUpdate

JDBC常用接口: ResultSet接口

ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。
在这里插入图片描述

获取结果集

Statement/PrepareStatement对象用相应的方法实
现对数据库的查询或修改,操作完成后会将查询的
结果集存放在ResultSet类的对象中返回。
ResultSet res = stm.executeQuery(String sqlStr);
如:String sqlStr=“select * from user”;
ResultSet res = stm.executeQuery(String sqlStr);

处理查询结果集 *.next()

ResultSet类的next()方法的返回值是boolean类
型的数据,当游标移动到最后一行之后会返回false。
ResultSet res = stm.executeQuery(String sqlStr);
while(res.next())
{
//处理语句
}
注:res.next() 移动游标后,不可回滚

 resultset.beforeFirst();//移动到最前面
resultset.afterLast();//移动到最后面
resu1tSet.next();//移动到下一个数据
resu1tset.previous();//移动到前一行
resultset.absolute(row);//移动到指定行

数据库常用操作:模糊查询

SQL语句中提供了LIKE操作符用于模糊查询,可使用“%”来代替0个或多个字符,使用下划线“_”来代替一个字符。例如,在查询姓张的同学的信息时,可使用以下SQL语句:

select * from user where name like '张%'

数据库操作:添加、修改、删除记录

对数据执行添加、修改和删除操作:
通过PreparedStatement类的指定参数动态地对数据表中原有数据进行修改操作,并通过executeUpdate()方法执行更新语句。

insert into user(file1,file2,file3,file4) values(2,'lili','女',20);
update user set age =24,[……] where id=2;
delete from user where age=20 

数据库应用一般操作过程 –总结

  1. 加载JDBC驱动程序:
  2. 创建数据库的连接获取数据库连接对象
  3. 创建获取执行对象。 Statement或PreparedStatement
  4. 执行SQL语句
  5. 处理结果 ( 两种情况) :
    1、执行更新返回的是本次操作影响到的记录数。
    2、执行查询返回的结果是一个ResultSet对象。
  6. 关闭JDBC对象:
    1、关闭记录集 ResutSet
    2、关闭声明 Statement/PreparedStatement
    3、关闭连接对象 Connection

JDBC 事务

JDBC 事务简介:为什么要使用事务

当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交在它上面发送的SQL语句。在并行处理的情况下往往会带来问题。例如银行转账转出与转入,仓储中的库存,入库,出库分表处理等
为了解决这个问题,JDBC提供了一种确保数据库操作同步完成的机制,我们把这种机制称为JDBC事务。

JDBC 事务简介:事务的特性(ACID)

原子性(Atomicity):事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。
一致性(Consistemcy):事务前后,数据库的状态都满足所有的完整性约束
隔离性(Isolation):并发执行的N个事务是隔离的,一个不影响一个,一个事务在没有commit之前,被修改的数据不可能被其他事务看到(通过设置数据库的隔离级别)。
持久性(Durability):持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。持久性主要在于DBMS的恢复性能。

编写JDBC 事务时的重要方法

在这里插入图片描述

JDBC 事务编写过程

1、设置事务的提交方式为非自动提交: conn.setAutoCommit(false);
2、将需要添加事务的代码放入try,catch块中。
3、在try块内添加事务的提交操作,表示操作无异常,提交事务。 conn.commit();
4、在catch块内添加回滚事务,表示操作出现异常,撤销事务 conn.rollback();
5、设置事务提交方式为自动提交: conn.setAutoCommit(true);

JDBC 连接池技术

JDBC 连接池技术:为什么要是用连接池

连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。连接池放了N个Connection对象,本质上放在内存当中,在内存中划出一块缓存对象,应用程序每次从池里获得Connection对象,而不是直接从数据里获得,这样不占用服务器的内存资源。

事实上,当一个线程需要用 JDBC 对一个 GBase 或其它数据库操作时,它从池中请求一个连接。当这个线程使用完了这个连接,将它返回到连接池中,这样这就可以被其它想使用它的线程使用。

当连接从池中“借出”,它被请求它的线程专有地使用。从编程的角度来看,这和用户的线程每当需要一个 JDBC 连接的时候调用DriverManager.getConnection() 是一样的,采用连接池技术,可通过使用新的或已有的连接结束线程。

连接池可以极大的改善用户的 Java 应用程序的性能,同时减少全部资源的使用。

JDBC 连接池技术:怎样创建和使用连接池

1、导入支持jar包()
2、创建 BasicDatasource对象
3、设置BasicDataSource对象的属性
4、 设置获取连接的方法及归还连接的方法
示例 DBUtil.java

JDBC 其它应用(自学了解)

1、JDBC批处理
2、JDBC可回滚的 结果集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/263639.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx多ip部署

1.修改网卡信息自定义多个IP 进入/etc/sysconfig/network-scripts,编辑ifcfg-ens33网卡文件。将dhcp动态分配修改成static,同时添加ip地址子网掩码、网关和DNS。 修改完成后重启网卡,systemctl restart network 2.修改nginx配置文件 有几个…

科技改变旅游,道观漫游可视化:智能化管理助力道观游览

道观漫游可视化是一种通过技术手段实现道观游览的可视化展示方式,让游客能够更加直观地了解道观的历史、文化和建筑特色。 随着旅游业的不断发展,道观漫游可视化已经成为了旅游行业中的一个重要方向,吸引了越来越多的游客前来体验。 道观漫游…

基于SSM的高校共享单车管理系统的设计与实现论文

摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此高校单车租赁信…

产品创新受赞誉,怿星荣获2023未来汽车(电子和软件)创新创业大赛一等奖

2023未来汽车(电子和软件)创新创业大赛 11月29日,上海临港,由中国汽车工程学会和中国(上海)自由贸易试验区临港新片区管理委员会联合举办的“2023未来汽车(电子和软件)创新创业大赛…

散列卡片悬停变为整齐列表

效果展示 CSS 知识点 transform 属性运用 页面整体布局 <ul><li><div class"box"><img src"./user1.jpg" /><div class"content"><h4>Hamidah</h4><p>commented on your photo.<br />…

vue使用echarts显示中国地图

项目引入echarts以后&#xff0c;在页面创建canvas标签 引入一个公共js文件&#xff08;下面这段代码就是china.js文件&#xff09; (function (root, factory) {if (typeof define function && define.amd) {// AMD. Register as an anonymous module.define([ex…

2023-12-05 Qt学习总结4

点击 <C 语言编程核心突破> 快速C语言入门 Qt学习总结 前言十二 QLabel文本框十三 QPushButton按钮十四 QLineEdit单行输入框总结 前言 要解决问题: 学习qt最核心知识, 多一个都不学. 十二 QLabel文本框 Qt的QLabel文本框是一个用于显示文本或图像的控件。它是Qt中常用…

C++学习笔记:继承

继承 什么是继承?继承的写法基类和派生类的赋值转换继承中的作用域派生类的默认成员函数单继承,多继承,虚拟继承is-a 和 has-a 什么是继承? 继承是C语言面向对象的三大特性之一&#xff0c;是面向对象程序设计使代码可以复用的最重要的手段,基本都是在一个类的基础上为了增加…

【Python】Selenium自动化测试框架

设计思路 本文整理归纳以往的工作中用到的东西&#xff0c;现汇总成基础测试框架提供分享。 框架采用python3 selenium3 PO yaml ddt unittest等技术编写成基础测试框架&#xff0c;能适应日常测试工作需要。 1、使用Page Object模式将页面定位和业务操作分开&#xff0…

Windows 11特有的一些功能,或多说少可以提高使用体验或办事效率

Windows 11的一些功能被隐藏起来,通常只是偶然才被发现的。我们花时间将这些酷炫的功能和其他技巧浮出水面,让你最终能够享受它们。 早期的Windows 11版本可能不包括这些功能。将Windows更新到最新版本以利用所有这些功能。 使用Snap Layouts组织窗口 如果你一直在屏幕周围…

Ubuntu系统关闭防火墙的正确方式

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

力扣257. 二叉树的所有路径(递归回溯与迭代)

题目&#xff1a; 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5","…