Java连接数据库的各种细节错误(细节篇)

 

目录

前后端联调(传输文件) 

ClassNotFoundException:

SQLException:

SQL语法错误:

数据库连接问题:

驱动问题:

资源泄露:

并发问题:

超时问题:

其他库冲突:

配置问题:

网络问题:

SSL/TLS问题:

数据库权限问题:

驱动不兼容:

其他未知错误:

1.变量名不一致出错:

2.浏览器访问或者postman测试的时候的URL路径问题:


前后端联调(传输文件) 

先讲点别的,在接收客户端传过来的数据时,如果是一个文件怎么接收并返回,以及返回的文件大小,多个文件大小:

<body><form action="/upload" method="post" enctype="multipart/form-data">姓名: <input type="text" name="username"><br>年龄: <input type="text" name="age"><br>头像: <input type="file" name="image"><br><input type="submit" value="提交"></form></body>

做事情之前不得先有一个客户端页面吗铁子。

有了之后,在建立Java连接的时候就要和上面form表单里面的三个属性有关系了,

action就是请求路径,

method就是请求方式

enctypr是上传的文件,默认值是只上传文件名,上面的是文件内容一起上传

设置好了之后要创建一个coneroller类来接收数据和返回数据:

 然后就需要把传进来的临时文件加载到本机,或者别的地方,这里就加载到本机:

import com.zaizai.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;
import java.util.UUID;@Slf4j
@RestController
public class UploadConeroller {//接收表单项@PostMapping("/upload")public Result upload(String username, Integer age, MultipartFile image) throws IOException {log.info("接收的表单项:{},{},{}",username,age,image);UUID uuid = UUID.randomUUID();String originalFilename = image.getOriginalFilename();int index = originalFilename.lastIndexOf(".");String substring = originalFilename.substring(index);String newFileName=uuid+substring;image.transferTo(new File("D:\\Java-Html文件转存路径\\"+newFileName));return Result.success();}}

  1. String originalFilename = image.getOriginalFilename();

这行代码从image对象中获取其原始文件名,并将其存储在originalFilename字符串变量中。
2. int index = originalFilename.lastIndexOf(".");

这行代码查找originalFilename字符串中最后一个.字符的位置。.通常用于表示文件扩展名,例如在文件名"example.jpg"中,.分隔了"example"和"jpg"。lastIndexOf方法返回这个.字符的索引值。如果originalFilename不包含.字符,那么此方法将返回-1。
3. String substring = originalFilename.substring(index);

这行代码使用之前找到的索引值(即最后一个.的位置)来从originalFilename中提取子字符串。这意味着它将获取原始文件名的扩展名部分。例如,如果originalFilename是"example.jpg",那么substring将是"jpg"。

总之,这段代码的主要目的是从给定的图像文件的原始文件名中提取文件的扩展名。

然后image调用方法transferTo把文件存到对应的的位置即可;

在Java中连接数据库时,可能会遇到各种错误。以下是一些常见的错误及其解决方法(下面其他错误里面有一些和容易被遗忘的,忽视的!!!)

  1. ClassNotFoundException:

    • 当你尝试加载一个类时,如果JVM找不到该类,就会抛出此异常。
    • 解决方法:确保已将JDBC驱动的JAR文件添加到项目的类路径中。
  2. SQLException:

    • 这是与数据库交互时最常见的异常。
    • 解决方法:检查URL、用户名、密码等连接参数是否正确。确保数据库正在运行,并且网络连接正常。
  3. SQL语法错误:

    • 如果SQL查询中的语法有误,你可能会收到一个语法错误。
    • 解决方法:仔细检查SQL查询,并使用在线SQL验证工具来帮助识别任何语法错误。
  4. 数据库连接问题:

    • 确保数据库服务器正在运行,并且可以从你的应用服务器访问它。
    • 解决方法:检查数据库服务器的状态,并确保网络连接正常。
  5. 驱动问题:

    • 如果你使用的是较旧的JDBC驱动,可能会遇到与新版本的数据库不兼容的问题。
    • 解决方法:确保你使用的JDBC驱动与你的数据库版本兼容。考虑使用JDBC 4.x或更高版本。
  6. 资源泄露:

    • 如果不正确地关闭数据库连接或ResultSet,可能会导致资源泄露。
    • 解决方法:确保在使用完数据库连接和ResultSet后正确关闭它们。使用try-with-resources结构可以自动管理资源。
  7. 并发问题:

    • 如果多个线程尝试同时访问同一数据库连接,可能会遇到并发问题。
    • 解决方法:为每个线程创建新的数据库连接,或者使用连接池来管理连接。
  8. 超时问题:

    • 如果数据库响应时间过长,可能会遇到超时问题。
    • 解决方法:增加连接的超时时间或优化查询以减少响应时间。
  9. 其他库冲突:

    • 如果项目中有其他库也使用了相同的JDBC驱动或依赖关系,可能会出现冲突。
    • 解决方法:确保所有库都使用相同版本的JDBC驱动,并考虑将JDBC驱动作为项目的依赖项进行管理。
  10. 配置问题:

  • 如果数据库的配置(例如端口、主机名等)不正确,可能会导致连接失败。
  • 解决方法:仔细检查数据库的配置信息,并确保它们与你的应用程序的设置匹配。
  1. 网络问题:

  • 如果应用程序和数据库服务器之间的网络出现问题,可能会导致连接失败。
  • 解决方法:检查网络连接,并确保防火墙设置不会阻止应用程序和数据库之间的通信。
  1. SSL/TLS问题:

  • 如果数据库需要安全连接(例如使用SSL/TLS),并且配置不正确,可能会导致连接失败。
  • 解决方法:确保SSL/TLS证书和密钥配置正确,并考虑使用专门的工具来测试SSL/TLS连接。
  1. 数据库权限问题:

  • 如果提供的用户名和密码没有足够的权限来访问数据库或执行查询,可能会导致错误。
  • 解决方法:确保提供的用户名和密码具有正确的权限设置,并考虑与数据库管理员合作来解决问题。
  1. 驱动不兼容:

  • 有时,JDBC驱动与特定的Java版本或操作系统不兼容,可能导致错误。
  • 解决方法:检查JDBC驱动的文档和兼容性要求,并确保它们与你的Java版本和操作系统兼容。
  1. 其他未知错误:

1.变量名不一致出错:

由于数据库里面的变量是用下划线分割,Java里面是驼峰命名法,如果直接把数据库变量复制到里面的话,不符合Java变量命名规范,测试数据的时候会报错,例如:

 解决方法图里面已经说了。

2.浏览器访问或者postman测试的时候的URL路径问题:

Java为了不重复重写一样的代码,优化代码量,提供了一个注解,可以一次性给相同的URL提取出来,用的时候只用写后面不一样的即可,但是这样如果忘了修改或者多写了一遍,呢么览器访问或者postman测试的时候的URL路径的时候就会找不到要访问的数据,如下:

 只用写不一样的部分不一样的不过分:

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

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

相关文章

SIEM 解决方案的不同部署方式,如何选择SIEM 解决方案

安全信息和事件管理&#xff08;SIEM&#xff09;作为一种网络安全解决方案&#xff0c;是多种技术的融合&#xff0c;这些技术结合了包括安全信息管理和安全事件管理在内的流程。简单来说&#xff0c;SIEM 解决方案是一种重要的安全工具&#xff0c;它收集、存储和分析来自整个…

Impala4.x源码阅读笔记(二)——Impala如何高效读取Iceberg表

前言 本文为笔者个人阅读Apache Impala源码时的笔记&#xff0c;仅代表我个人对代码的理解&#xff0c;个人水平有限&#xff0c;文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解&#xff0c;欢迎指正。 Iceberg表是一种用于存储大规模结构化数据的…

Redis 环境搭建2

文章目录 第2关&#xff1a;使用 Redis 第2关&#xff1a;使用 Redis 本文是接着上篇文章写的第二关代码&#xff0c;部分人再进入第二关时不会保留第一关的配置的环境&#xff0c;可以通过下面一句代码进行检验。 redis-cli -p 7001 -c如果进入到了redis界面就是有环境&…

【开源】基于Vue+SpringBoot的教学资源共享平台

文末获取源码&#xff0c;项目编号&#xff1a; S 068 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S068。} 文末获取源码&#xff0c;项目编号&#xff1a;S068。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课…

矩母函数,概率生成函数, 随机变量的变换方法

这个标题真帅 Thanks Ni Zihan. 随机变量的变换方法总结概率生成函数 (probability-generating function, PGF)矩母函数&#xff08;Moment Generating Function &#xff0c; MGF&#xff09;矩母函数详细介绍 特征函数 Thanks Ni Zihan. 随机变量的变换方法总结 &#xff0…

网络安全——Iptables防DDoS攻击实验

一、实验目的要求&#xff1a; 二、实验设备与环境&#xff1a; 三、实验原理&#xff1a; 四、实验步骤&#xff1a; 五、实验现象、结果记录及整理&#xff1a; 六、分析讨论与思考题解答&#xff1a; 一、实验目的要求&#xff1a; 1、掌握常见DDoS攻击SYN Flood的攻击…

金数据企业版:广告推广效率提升的关键,无代码API集成与连接技术

深入理解无代码开发与API集成的重要性 在当今的电商竞争环境下&#xff0c;企业必须寻找提高效率和灵活性的办法。无代码开发平台&#xff0c;如金数据&#xff0c;提供了一种创新的方式来应对快速变化的市场需求&#xff0c;特别是在API集成方面。无代码开发意味着企业可以通…

Slate基础使用说明

目录 Slate基础使用说明 1. 简单教程 2. 要点说明 2.1 TCommands以及TCommands基类 2.2 FUICommandInfo 2.3 FUICommandList 2.4 FUIAction 2.5 UICommand 3. 代码源码 4. 工具使用 4.1 Display Ul Extension Points 4. 参考文章 Slate基础使用说明 1.…

C++1114新标准——统一初始化(Uniform Initialization)、Initializer_list(初始化列表)、explicit

系列文章目录 C11&14新标准——Variadic templates&#xff08;数量不定的模板参数&#xff09; C11&14新标准——Uniform Initialization&#xff08;统一初始化&#xff09;、Initializer_list&#xff08;初始化列表&#xff09;、explicit 文章目录 系列文章目录1…

快速解决Edge浏览器常见问题:完整教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一、Edge浏览器是什么&#xff1f; 二、常见的问题 1. DNS服务器出错 解决方案一&#xff1a;清除浏览器缓存和Cookie 2.网络问题 3.缓存和Cook…

网络安全等级保护V2.0测评指标

网络安全等级保护&#xff08;等保V2.0&#xff09;测评指标&#xff1a; 1、物理和环境安全 2、网络和通信安全 3、设备和计算安全 4、应用和数据安全 5、安全策略和管理制度 6、安全管理机构和人员 7、安全建设管理 8、安全运维管理 软件全文档获取&#xff1a;点我获取 1、物…

Spark RDD的转换

按颜色区分转换&#xff1a; 绿色是单 RDD 窄依赖转换黑色是多 RDD 窄依赖转换紫色是 KV 洗牌型转换黄色是重分区转换蓝色是特例的转换 单 RDD 窄依赖转换 MapPartitionRDD 这个 RDD 在第一次分析中已经分析过。简单复述一下&#xff1a; 依赖列表&#xff1a;一个窄依赖&…

【Java 基础】32 定时调度

文章目录 Timer 类创建 Timer注意事项 ScheduledExecutorService 接口创建 ScheduledExecutorService注意事项 选择合适的定时调度方式Timer 的适用场景ScheduledExecutorService 的适用场景 总结 在软件开发中&#xff0c;定时任务是一种常见的需求&#xff0c;用于周期性地执…

Java - Spring中Bean的循环依赖问题

什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你&#xff0c;你也依赖我。 比如&#xff1a;丈夫类Husband&#xff0c;妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 Spring解决循环依赖的机理 Spring为什么可以解决set s…

【知识分享】Java用poi实现excel导出图片并浮在单元格上方

当使用Java导出Excel并将图片放置在单元格上时&#xff0c;可以使用Apache POI库来实现。以下是一个简单的示例代码&#xff1a; package org.example.demo2;import com.aliyun.core.utils.IOUtils; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermod…

用23种设计模式打造一个cocos creator的游戏框架----(八)适配器模式

1、模式标准 模式名称&#xff1a;适配器模式 模式分类&#xff1a;结构型 模式意图&#xff1a;适配器模式的意图是将一个类的接口转换成客户端期望的另一个接口。适配器模式使原本接口不兼容的类可以一起工作。 结构图&#xff1a; 适用于&#xff1a; 系统需要使用现有的…

centos7 docker Mysql8 搭建主从

Mysql8 搭建主从 docker的安装docker-compose的安装安装mysql配置主从在master配置在slave中配置在master中创建同步用户在slave中连接 测试连接测试配置测试数据同步遇到的问题id重复错误执行事务出错&#xff0c;跳过错误my.cnf 不删除多余配置的错误可能用到的命令 docker的…

IOS添加三方库冲突了

1 duplicate symbol for architecture arm64 改为 在Build Settings->Other link flags中添加-dead_strip&#xff0c;如果Other link flags中有-all_load与-force_load则删掉&#xff0c;只填-dead_strip

倒计时4天|谈思AutoSec智能汽车安全攻防实训课程火热报名中~

车联网技术是国内外的研究热点问题。车联网技术与传统汽车行业深度融合&#xff0c;促进了自动驾驶技术在多种智能场景下的部署与应用。然而&#xff0c;车联网技术智能化、共享化、网联化发展的同时也带来了不可避免的安全问题&#xff0c;如硬件安全、数据安全、通信安全、云…

前端:如何让background背景图片进行CSS自适应

在设置login背景时&#xff0c;找到了一张这样的图片&#xff1a; 但是设置成login背景时&#xff0c;如果没有做一些css适应设置&#xff0c;图片就变样了&#xff0c;变成了这样&#xff1a; 严重变形了&#xff0c;这就造成了一种理想与现实的差距。 若想解决这个自适应问题…