Java 连接数据库

news2025/1/16 17:48:42

数据库:存储数据(集中管理)

目的: 文件中的数据能够放在数据库中集中管理

管理方法:一个项目一个库,每个库中包含最小化数据的表

开发: 节省存储空间,节省运行空间,采用数据库,架构

Java连接数据库

Java se所有类String ArrayList来自java.lang

后面web页面应用----à导包,包第三包 jar包

mysql-connector-java.jar 连接数据库的版本  

java面向接口,提供了数据库的相关接口,每个不同的数据库厂家根据接口开发方法。Java使用数据库,调用对应接口的实现。

反射

连接:Connection 连接

在Driver类中connect方法就是数据库连接方法,方法返回类型Connection

Connection接口中方法就是操作数据库的相关方法

Java原生DriverManager,方便程序员开发方便

DriverManager调用Connection, getConnection

调用DriverManager.getConnection(数据库地址,用户名,密码 );

先把mysql-connect-java包导入到idea的库中

首先建一个包

这个package取名lib

把使用的java包拷贝在lib的package目录下。

在项目名称上右键,点击 open Module setting 模块设置。

在出现的对话框中,左侧点击library库,然后右边点击加号,添加这个jar包。

点击加号后,选择java

出现的对话框,选择自己项目下的jar 包文件

这里是一个询问的信息

直接点击ok即可。继续ok即可。

这时项目中的jar包就会解开。

解开后,才知道java包如何导入。

使用代码连接java,再规范化开发(面向接口)

连接java效仿mysql源码,注册驱动。

DriverManager.registerDriver(new Driver());

获取Connection连接接口,因为数据库的操作方法都在这里。

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root","admin");

连接时输入mysql 数据库的连接地址。

getConnection输入数据库的连接地址
本地localhost,连接端口号 3306,连接数据库
jdbc:mysql://localhost:3306/shop
用户名 root
密码  admin

通过连接执行sql语句,需要定义sql语句。

String sql="select * from user";

在connection操作数据库前面有两个Statement , ResultSet

 Statement 是执行sql语句的线程。

//Statement进行线程语句的处理
Statement st=conn.createStatement();

Statement是线程语句的处理,statement中可以执行语句

executeQuery执行查询,返回的类型是ResultSet,这是数据库结果记录

executeUpdate执行更新(增删改)

统一方法;execute执行增删改查,返回值是布尔型,不能查询后返回记录的条件(除登录)

如果执行查询,结果返回ResultSet

//查询的方法executeQuery,结果是ResultSet
ResultSet rs=st.executeQuery(sql);

在Resultset中看到next()方法,一定用到Iterator迭代器,这个迭代器可以用next();ResultSet是一个迭代器

只能使用迭代器的方法来使用。返回类型:next()有没有,数据库中把指针移到当前数据。

ResultSet中next方法的原理。

 在ResultSet类中都要get后面跟上类型。因为java 和mysql 都是强语言类型,数据必须指明类型。Java 获取字段类型一定要跟mysql里对应字段类型是一致的。

ResultSet rs=st.executeQuery(sql);
//因为ResultSetnext()判断数据是否有,如果有一直做,执行一次next(),记录在restulSet
while(rs.next()){
    //按照mysql的类型和java类型对应关系取数据
    int id=rs.getInt("id");
    String name=rs.getString("username");
    String sex=rs.getString("sex");
    String position=rs.getString("position");
    int age=rs.getInt("age");
    String password=rs.getString("password");
    System.out.println(id+":"+name+":"+sex+":"+position+":"+age+":"+password);
}

在数据方法中,Connection中有方法close(),close()关闭。

   这里的问题:

DriverManager.registerDriver(new Driver());

注册Driver时,new Driver中源码中静态块中也发生new Driver()

我们这里的代码执行两次,目的是注册驱动

在源码中,获取连接本身具备

Reflection.getCallerClass()

Reflection类是 反射

通过反射技术注册类

注意:java 只出规范,其他的应用按照规范去开发,java在每一个规范中都有反射去找到相关的类。

直接使用反射技术把驱动注册。

正确连接数据库使用方法
(1)注册驱动(反射)

Class.forName("com.mysql.jdbc.Driver");

(2)获取连接

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root","admin");

(3)定义sql语句

String sql="select * from user";

(4)获取Statement

Statement st=conn.createStatement();

(5)根据需要决定,如果查询executeQuer,如果更新executeUpdate

ResultSet rs=st.executeQuery(sql);

返回结果:如果是查询用ResultSet,如果是增删改,返回的是int

如果是ResultSet使用迭代器遍历next()方法

(6)根据mysql的数据类型与java 的数据类型的对应关系,使用对应的get方法,得出结果.

(7)最后依次关闭ResultSet,Statement,Connection。

rs.close();
st.close();
conn.close();

开发:基本的单表增删改查

  1. 面向接口,需要有接口文件

这里的方法:增删改查

一个属性和一个值对应关系(Map,面向对象)

按照java思想理念,面向对象,没有方法是逻辑关系,它就是java bean)

(2) 面向对象,把数据库记录中的字段封装成一个类。

 Java bean在开发中,就是对应的数据库的表

代码在码云Gitee:
java连接数据库代码 · 6446e40 · zyt/麦当劳投资人 - Gitee.comicon-default.png?t=N7T8https://gitee.com/zytscode/mcdonalds-investors/commit/6446e40afa37b4dedbc54dbf2b06cac585005b52

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【富文本编辑器】原生JS使用WangEditor和vue上传图片前后端demo

【富文本编辑器】原生JS使用WangEditor上传图片前后端demo 第一步 HTML 第二步 初始化WangEditor与图片上传回调函数 第三步 后端返回数据体封装 第四步 后端接口上传图片,并返回图片地址 最近,我遇到了这样一个问题:因为我们的项目是基于…

SDGAN:一种用于低剂量CT图像重建的新型空间可变形生成对抗性网络

SDGAN: A novel spatial deformable generative adversarial network for low-dose CT image reconstruction SDGAN:一种用于低剂量CT图像重建的新型空间可变形生成对抗性网络背景贡献实验方法The conformer-based generatorThe dual-scale discriminatorThe spatia…

C/S与B/S的区别

B/S与C/S理解 C/S结构B/S结构问题数据放在服务器端与客户端的利弊 C/S结构 客户端:用户安装的软件 服务端:统一管理数据库的主机中的软件 叫做服务端。 B/S结构 用户通过浏览器实现(往往表示业务逻辑在前端进行实现,主要业务逻…

栈和队列的OJ题——14.用栈实现队列

14.用栈实现队列 232. 用栈实现队列 - 力扣(LeetCode) /* 解题思路: 此题可以用两个栈实现,一个栈进行入队操作,另一个栈进行出队操作 出队操作: 当出队的栈不为空是,直接进行出栈操作&#xff…

基于SSM的网上手机销售系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

OpenSSH(CVE-2023-38408)OpenSsh9.5一键升级修复

yum install -y git cd /root git clone https://gitee.com/qqmiller/openssh-9.5p1-.x86_64.git cd openssh-9.5p1-.x86_64/ bash openssh_update.sh重启sshd: systemctl restart sshd 查看sshd状态: systemctl status sshd 重要的是按此操作升级完成…

一文彻底弄懂动态规划【DP】

动态规划是一种重要的算法,它能解决很多看似复杂的问题,关键在于找到问题的子问题结构,并根据子问题的解决方式来解决原问题。首先要了解的是动态规划的基本思想: 动态规划的基本思想是:将一个复杂的问题分解为一系列…

SpringBootAdmin

SpringBootAdmin 文章目录 SpringBootAdmin创建SpringBootAdmin服务端创建SpringBootAdmin客户端启动应用 总结 github地址 https://github.com/codecentric/spring-boot-admin 可以查到所有的版本号 创建SpringBootAdmin服务端 创建springBoot项目的时候,在ops选项…

图文并茂教你模拟302接口,实现js中axios,fetch遇到302状态码后跳转的多种方案axios,fetch成功响应拦截302

前情提要 日常工作中,我们会使用fetch,或者axios发起请求来获取数据,但是当我们遇到一些特殊需求的时候,使用不同库之后,会得到不同的结果,例如302,308的状态码,那么我们应该怎么处理这两种情况呢&#xf…

【Linux】第二十六站:软硬链接

文章目录 一、软链接二、硬链接三、ln命令四、该如何理解硬链接?五、如何理解软链接六、为什么要用软硬链接1.软链接的应用场景2.硬链接的应用场景 一、软链接 如下所示,我们创建一个文件以后,然后执行下面的指令 ln -s file.txt soft-link…

Prime 2.0

信息收集 # Nmap 7.94 scan initiated Thu Nov 23 20:09:06 2023 as: nmap -sn -oN live.nmap 192.168.182.0/24 Nmap scan report for 192.168.182.1 Host is up (0.00018s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.182.2 Host is u…

P-Tuning v2论文概述

P-Tuning v2论文概述 P-Tuning v2论文概述前言微调的限制性P-Tuning的缺陷P-Tuning v2 摘要论文十问NLU任务优化点实验数据集预训练模型实验结果消融实验 结论 P-Tuning v2论文概述 前言 微调的限制性 微调(fine-tuning)是一种在预训练模型基础上进行目…

使用 Kettle 完成数据 ETL

文章目录 使用 Kettle 完成数据 ETL数据清洗数据处理 使用 Kettle 完成数据 ETL 现在我们有一份网站的日志数据集,准备使用Kettle进行数据ETL。先将数据集加载到Hadoop集群中,然后对数据进行清洗,最后加载到Hive中。 在本地新建一个数据集文…

Active Stereo Without Pattern Projector论文精读

1.背景补充 主动立体相机和被动立体相机的主要区别在于它们获取立体视觉信息的方式 主动立体相机12: 主动立体视觉是指寻找最佳的视角去重建目标或者场景1。主动视觉的实现方式通常有:改变环境中的光照条件、改变相机的视角、移动相机自身位置等&…

大模型中幂律缩放法则和涌现能力

幂律缩放法则是一种用于描述两个变量之间关系的数学模型。 根据幂律缩放法则,当一个变量的值变化时,另一个变量的值以指数方式变化。具体而言,幂律缩放法则可以表示为Y a * X^b,其中Y表示一个变量的值,X表示另一个变…

国民技术N32_MCU ADC如何获取高精度采样数据

前言 国民技术微控制器内置最多四个高级 12 位 ADC (取决于产品系列) ,具有校准功能,用于提高环境条件 变化时的 ADC 精度。 在涉及模数转换的应用中, ADC 精度会影响整体的系统质量和效率。为了提高此精度,必须了解与 ADC 相关…

鸿蒙开发学习笔记

快速入门 配置网络权限 1.打开项目的 module.json5 文件 2.在module 里面写下面代码 3.这样就可以使用网络图片了 4.模拟器上就可以正常显示网络图片了 5.官方文档有相关说明 6. 华为官方编辑工具使用技巧(内置文档),鼠标移动到标签上&…

JVM内存结构:StringTable与常量池关系

首先看一道题 这就涉及到StringTable和常量池,答案在文末,全做对就不用看了 而StringTable的位置在不同版本也有变化 , 我们只探讨jdk1.8版本 与StringTable 串池对应的是常量池 案例一、常量池和串池联系 引用所指肯定不会是常量池中的字…

实验6 二叉树操作

0x01 实验目的 掌握二叉树的基本概念,二叉树的存储结构使用链表。 0x02 实验内容 输入一个完全二叉树的层次遍历字符串,创建这个二叉树,输出这个二叉树的前序遍历字符串、中序遍历字符串、后序遍历字符串、结点数目、二叉树高度(上述每一个…

基于Java SSM框架+Vue实现旅游资源网站项目【项目源码+论文说明】

基于java的SSM框架Vue实现旅游资源网站演示 摘要 本论文主要论述了如何使用JAVA语言开发一个旅游资源网站 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述旅游…