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.mzph.cn/news/218323.shtml

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

相关文章

Docker-compose单机容器编排

YML文件是什么&#xff1f; YAML文件是一种标记语言&#xff0c;以竖列的形式展示序列化的数据格式。可读性很高类似于json格式。语法简单。 YAML通过缩进来表示数据结构&#xff0c;连续的项目用-符号来表示。 YML文件使用的注意事项 1、 大小写敏感 2、 通过缩进表示层级…

JavaScript实现飘窗功能

实现飘窗功能很简单 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title…

Ubuntu22.04添加用户

一、查看已存在的用户 cat /etc/passwd 二、添加用户 sudo adduser xxx 除了密码是必须的&#xff0c;其他的都可以不填&#xff0c;直接回车即可 三、查看添加的用户 cat /etc/passwd 四、将新用户添加到sudo组 sudo adduser xxx sudo 五、删除用户 sudo delus…

钉钉 × E签宝,打通系统屏障,实现钉钉审批通过后自动同步到E签宝发起签署并返回拖章链接全流程自动化

1 场景描述 成熟的业务体系需要用户的优质体验和高效的交易效率来支撑。而合同作为双方业务往来的法律保证&#xff0c;签合同已成为目前企业必不可少的重要一环。但传统的签署场景中&#xff0c;传统纸质合同的签署往往采用线下见面或邮寄的方式进行&#xff0c;不仅流程复杂&…

5 转向事件驱动的架构

文章目录 核心概念消息代理事件和消息了解事件异步消息通信响应式系统 事件驱动的利弊消息传递模式发布—订阅工作队列过滤器数据持久性 消息传递代理协议、标准和工具AMQP和RabbitMQ基本概念交换类型和路由消息确认和拒绝 设置RabbitMQ安装RabbitMQRabbitMQ管理界面 Spring AM…

pyqt5+QWebEngineView+pdfjs+win32print实现pdf文件的预览、打印

一、pdf显示逻辑 import sys from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgetsPDFJS file:///pdfjs-1.9.426-dist/web/viewer.html # PDFJS file:///usr/share/pdf.js/web/viewer.html PDF file:///D:/Code/report.pdfclass Window(QtWebEngineWidgets.QWebEngine…

数据结构:使用Stack完成表达式计算逻辑

题目&#xff1a; 给出如下串&#xff1a;sum(sum(sum(1,2),avg(3,5)),avg(avg(6,8),7))&#xff0c; 计算结果&#xff08;保证输入任意上述接口均能输出正确结果&#xff09; 思路&#xff1a; ​编辑 代码&#xff1a; import java.util.Stack;public class Test {public …

paddleocr文字识别变迁

数据挖掘 v3 UIM&#xff1a;无标注数据挖掘方案 UIM&#xff08;Unlabeled Images Mining&#xff09;是一种非常简单的无标注数据挖掘方案。核心思想是利用高精度的文本识别大模型对无标注数据进行预测&#xff0c;获取伪标签&#xff0c;并且选择预测置信度高的样本作为训…

LeetCode(57)合并两个有序链表【链表】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 合并两个有序链表 1.题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4…

修改naive ui默认样式,css变量值修改

新项目开发使用了naive ui组件库&#xff0c;使用组件时涉及到css样式修改&#xff0c;可以直接在组件父容器上使用组件内自带的css变量&#xff0c;组件会自动继承父容器的css变量值&#xff0c;不会影响其他页面使用&#xff1b; 示例&#xff1a;一个注册表单&#xff0c;两…

Centos7 配置Git

随笔记录 目录 1&#xff0c; 新建用户 2. 给用户设置密码相关操作 3. 为新用户添加sudo 权限 4. 配置Git 4.1 配置Git 4.2 查看id_ras.pub 5, 登录Git 配置SSH 秘钥 6. Centos7 登录Git 7. clone 指定branch到本地 8. 将新代码复制到指定路径 9. 上传指定代码 …

生态系统NPP及碳源、碳汇模拟、土地利用变化、未来气候变化、空间动态模拟实践技术应用

碳中和可以从碳排放&#xff08;碳源&#xff09;和碳固定&#xff08;碳汇&#xff09;这两个侧面来理解。陆地生态系统在全球碳循环过程中有着重要作用&#xff0c;准确地评估陆地生态系统碳汇及碳源变化对于研究碳循环过程、预测气候变化及制定合理政策具有重要意义。 CASA(…

生产实践:基于K8S私有化交付要注意这几点问题

公众号「架构成长指南」&#xff0c;专注于生产实践、云原生、分布式系统、大数据技术分享 在使用 k8s 进行项目私有化部署时&#xff0c;会遇到很多问题&#xff0c;以下把作者经常遇到的一些问题以及需要注意的点分享给各位。 资源依赖问题 在进行私有化部署时&#xff0c;…

字符设备驱动开发基础

一. 简介 本文简单了解一下&#xff0c;在字符设备驱动开发开始前对其一些基本认识。简单了解一下&#xff0c;应用程序与驱动的交互原理&#xff0c;以及字符设备驱动开发流程。 二. 字符设备驱动开发流程 1. 在 Linux 中一切皆为文件&#xff0c;驱动加载成功以后会在“…

数据爬虫:获取申万一级行业数据

目录 1. 获取访问接口 2. 链接网址 3. 链接名单 免责声明&#xff1a;本文由作者参考相关资料&#xff0c;并结合自身实践和思考独立完成&#xff0c;对全文内容的准确性、完整性或可靠性不作任何保证。同时&#xff0c;文中提及的数据仅作为举例使用&#xff0c;不构成推荐…

网站高性能架构设计——高性能数据库集群

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、高性能数据库简介 1.高性能数据库方式 读写分离&#xff1a;将访问压力分散到集群中的多个节点&#xff0c;没有分散存储压力 分库分表&…

Unity_使用FairyGUI搭建登录页面

Unity_使用FairyGUI搭建登录页面 1. 使用FairyGUI准备一个UI界面&#xff0c;例如&#xff1a;以下登录 2. 发布导出&#xff08;发布路径设置为Unity的Asset下任何路径&#xff09; 3. Unity编辑器安装FairyGUI包资源&#xff08;在资源商店找见并存储为我的资源&#xff0c;…

百度智能云战略与咨询高级总监詹颖:每个人都能在大模型驱动的数字化生态中找到立足之地

“ 大模型是皇冠上的明珠。 ” 整理 | 王娴 编辑 | 云舒 出品&#xff5c;极新 2023年11月28日&#xff0c;极新AIGC行业峰会在北京东升国际科学园顺利召开&#xff0c;百度智能云战略与咨询高级总监詹颖女士在会上做了题为《生成式 AI 驱动企业应用创新》的演讲。 重点…

了解宝宝健康第一步:做好华大基因无创产前筛查检测

近年来&#xff0c;高龄产妇明显增加&#xff0c;多因素的影响导致出生缺陷发生率呈总体上升趋势&#xff0c;出生缺陷已经成为重大公共卫生问题之一&#xff0c;更是影响人口质量的重要风险因素。孕前、孕期到产后的出生缺陷综合防控三级体系中&#xff0c;做好产前筛查是阻断…

通过fpmarkets与自媒体导师学习经验,避免踩坑

举一个例子&#xff0c;从fpmarkets与自媒体导师学习的负面经验&#xff0c;避免各位投资者踩坑。这个要从fpmarkets刚踏入外汇交易市场的第二年说起&#xff0c;偶然的一次&#xff0c;当fpmarkets看到一个可以不用花钱就可以学习交易培训课程时&#xff0c;就如同中了大奖一样…