java连数据库

一、准备工作

  1. ​安装MySQL数据库​
    确保已安装MySQL服务器并启动服务

  2. ​下载JDBC驱动​

    • 官方驱动:MySQL Connector/J
    • Maven依赖:
      <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version>
      </dependency>

      <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency>

二、基础连接步骤 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class MySQLDemo {// 数据库信息static final String URL = "jdbc:mysql://localhost:3306/mydatabase";static final String USER = "root";static final String PASSWORD = "123456";public static void main(String[] args) {Connection conn = null;try {// 1. 加载驱动(JDBC 4.0+ 可自动加载)Class.forName("com.mysql.cj.jdbc.Driver");// 2. 建立连接conn = DriverManager.getConnection(URL, USER, PASSWORD);// 3. 使用连接进行数据库操作System.out.println("连接成功!");} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();} finally {// 4. 关闭连接try {if(conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}

三、关键参数说明

  1. ​连接URL格式​

    jdbc:mysql://[host][:port]/[database][?参数]
    • 常用参数:
      • useSSL=false 禁用SSL(开发环境建议)
      • serverTimezone=UTC 设置时区
      • characterEncoding=utf8 字符编码
  2. ​推荐完整URL​

    String URL = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8";

四、执行SQL操作

1. 查询数据示例
Statement stmt = null;
ResultSet rs = null;
try {stmt = conn.createStatement();rs = stmt.executeQuery("SELECT id, name FROM users");while(rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");System.out.println(id + ": " + name);}
} finally {if(rs != null) rs.close();if(stmt != null) stmt.close();
}
2. 使用PreparedStatement(推荐)
String sql = "INSERT INTO users(name, age) VALUES(?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, "张三");pstmt.setInt(2, 25);int rows = pstmt.executeUpdate();System.out.println("插入" + rows + "条记录");
}

五、事务管理

try {conn.setAutoCommit(false); // 关闭自动提交// 执行多个SQL操作...conn.commit(); // 提交事务
} catch (SQLException e) {try {conn.rollback(); // 回滚事务} catch (SQLException ex) {ex.printStackTrace();}e.printStackTrace();
} finally {conn.setAutoCommit(true); // 恢复自动提交
}

六、常见问题排查

  1. ​驱动加载失败​

    • 确认jar包已正确添加到classpath
    • 检查驱动类名是否正确(新版使用com.mysql.cj.jdbc.Driver
  2. ​连接超时​

    • 检查MySQL服务是否运行
    • 验证用户名/密码是否正确
    • 检查防火墙设置
  3. ​时区问题​

    // 在连接URL中添加时区参数 ?serverTimezone=Asia/Shanghai

七、连接池推荐

对于生产环境,建议使用连接池:

  • HikariCP(性能最佳)
  • Druid(阿里出品,带监控功能)

HikariCP简单示例:

HikariConfig config = new HikariConfig();
config.setJdbcUrl(URL);
config.setUsername(USER);
config.setPassword(PASSWORD);try (HikariDataSource ds = new HikariDataSource(config);Connection conn = ds.getConnection()) {// 使用连接...
}

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

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

相关文章

【生态信息】开源软件全方位解析

开源软件(0pen Source Software&#xff0c;0ss)是指其源代码可以公开发布、查看、使用和修改的软件。这一概念的核心在于开放性和共享性&#xff0c;允许开发者自由地使用、修改、分发以及改进软件。开源软件通常遵循特定的开源许可证&#xff0c;这些许可证确保了软件的自由使…

探秘 DeerFlow:字节跳动开源的科研创作魔法盒!

1.前言 字节跳动于2025年5月9日开源了名为DeerFlow的全新Deep Research项目&#xff0c;该项目基于LangStack框架&#xff0c;旨在通过人工智能技术简化科研和内容创作流程。DeerFlow整合了语言模型、网络搜索、爬虫和Python代码执行等多种工具&#xff0c;支持深度研究、MCP集…

机器学习第十一讲:标准化 → 把厘米和公斤单位统一成标准值

机器学习第十一讲&#xff1a;标准化 → 把厘米和公斤单位统一成标准值 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;超详细手把手指南 一、买菜…

less中使用 @supports

在Less中使用supports supports 是CSS的条件规则&#xff0c;用于检测浏览器是否支持特定的CSS属性或值。在Less中&#xff0c;你可以像在普通CSS中一样使用supports&#xff0c;同时还能利用Less的特性来增强它。 基本用法 /* 检测浏览器是否支持display: flex */ supports …

LeetCode Hot100 (1/100)

目录 一、有关数组和动态数组的排序&#xff08;sort函数&#xff09; 1.普通数组的排序 基本用法 降序排序 2.vector的排序 基本用法 降序排序 二、数组长度和一些vector的基本语法 1. 静态数组长度计算​ 2. 安全获取数组长度&#xff08;C17 起&#xff09;​ 3.vecto…

通过MCP让LLM调用系统接口

场景 MCP的出现大大丰富了LLM的功能&#xff0c;对于存量系统&#xff0c;我们希望能让模型调用已有的接口&#xff0c;以最小的成本让AI能够获取系统内部数据。因此我们开发了一个名为http-api-call的MCP Server&#xff0c;来支持模型到内部API的调用 实现方案 使用用标准…

基于Transformer的多资产收益预测模型实战(附PyTorch实现与避坑指南)

基于Transformer的多资产收益预测模型实战(附PyTorch模型训练及可视化完整代码) 一、项目背景与目标 在量化投资领域,利用时间序列数据预测资产收益是核心任务之一。传统方法如LSTM难以捕捉资产间的复杂依赖关系,而Transformer架构通过自注意力机制能有效建模多资产间的联…

养生:打造健康生活的全方位策略

在生活节奏不断加快的当下&#xff0c;养生已成为提升生活质量、维护身心平衡的重要方式。从饮食、运动到睡眠&#xff0c;再到心态调节&#xff0c;各个方面的养生之道共同构建起健康生活的坚实基础。以下为您详细介绍养生的关键要点&#xff0c;助您拥抱健康生活。 饮食养生…

轻型汽车鼓式液压制动器系统设计

一、设计基础参数 1.1 整车匹配参数 参数项数值范围整备质量1200-1500kg最大设计车速160km/h轮胎规格195/65 R15制动法规要求GB 12676-2014 1.2 制动性能指标 制动减速度&#xff1a;≥6.2m/s&#xff08;0型试验&#xff09; 热衰退率&#xff1a;≤30%&#xff08;连续10…

无法更新Google Chrome的解决问题

解决问题&#xff1a;原文链接&#xff1a;【百分百成功】Window 10 Google Chrome无法启动更新检查&#xff08;错误代码为1&#xff1a;0x80004005&#xff09; google谷歌chrome浏览器无法更新Chrome无法更新至最新版本&#xff1f; 下载了 就是更新Google Chrome了

【AAAI 2025】 Local Conditional Controlling for Text-to-Image Diffusion Models

Local Conditional Controlling for Text-to-Image Diffusion Models&#xff08;文本到图像扩散模型的局部条件控制&#xff09; 文章目录 内容摘要关键词作者及研究团队项目主页01 研究领域待解决问题02 论文解决的核心问题03 关键解决方案04 主要贡献05 相关研究工作06 解决…

Kuka AI音乐AI音乐开发「人声伴奏分离」 —— 「Kuka Api系列|中文咬字清晰|AI音乐API」第6篇

导读 今天我们来了解一下 Kuka API 的人声与伴奏分离功能。 所谓“人声伴奏分离”&#xff0c;顾名思义&#xff0c;就是将一段完整的音频拆分为两个独立的轨道&#xff1a;一个是人声部分&#xff0c;另一个是伴奏&#xff08;乐器&#xff09;部分。 这个功能在音乐创作和…

Idea 设置编码UTF-8 Idea中 .properties 配置文件中文乱码

Idea 设置编码UTF-8 Idea中 .properties 配置文件中文乱码 一、设置编码 1、步骤&#xff1a; File -> Setting -> Editor -> File encodings --> 设置编码二、配置文件中文乱码 1、步骤&#xff1a; File -> Setting -> Editor -> File encodings ->…

Xilinx FPGA PCIe | XDMA IP 核 / 应用 / 测试 / 实践

注&#xff1a;本文为 “Xilinx FPGA 中 PCIe 技术与 XDMA IP 核的应用” 相关文章合辑。 图片清晰度受引文原图所限。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 FPGA&#xff08;基于 Xilinx&#xff09;中 PCIe 介绍以及 IP 核 XDMA 的使用 N…

sqli—labs第六关——双引号报错注入

一&#xff1a;判断输入类型 首先测试 ?id1&#xff0c;?id1&#xff0c;?id1"&#xff0c;页面回显均无变化 所以我们采用简单的布尔测试&#xff0c;分别测试数字型&#xff0c;单引号&#xff0c;双引号 然后发现&#xff0c;只有在测试到双引号注入的时候符合关键…

【TroubleShoot】禁用Unity Render Graph API 兼容模式

使用Unity 6时新建了项目&#xff0c;有一个警告提示&#xff1a; The project currently uses the compatibility mode where the Render Graph API is disabled. Support for this mode will be removed in future Unity versions. Migrate existing ScriptableRenderPasses…

图形学、人机交互、VR/AR、可视化等领域文献速读【持续更新中...】

&#xff08;1&#xff09;笔者在时间有限的情况下&#xff0c;想要多积累一些自身课题之外的新文献、新知识&#xff0c;所以开了这一篇文章。 &#xff08;2&#xff09;想通过将文献喂给大模型&#xff0c;并向大模型提问的方式来快速理解文献的重要信息&#xff08;如基础i…

Hadoop-HDFS-Packet含义及作用

在 HDFS&#xff08;Hadoop Distributed File System&#xff09;中&#xff0c;Packet 是数据读写过程中用于数据传输的基本单位。它是 HDFS 客户端与数据节点&#xff08;DataNode&#xff09;之间进行数据交互时的核心概念&#xff0c;尤其在写入和读取文件时&#xff0c;Pa…

显示的图标跟UI界面对应不上。

图片跟UI界面不符合。 要找到对应dp的值。UI的dp要跟代码里的xml文件里的dp要对应起来。 蓝湖里设置一个宽度给对应上。然后把对应的值填入xml. 一个屏幕上的图片到底是用topmarin来设置&#xff0c;还是用bottommarin来设置。 因为第一节&#xff0c;5&#xff0c;7 车厢的…

【taro3 + vue3 + webpack4】在微信小程序中的请求封装及使用

前言 正在写一个 以taro3 vue3 webpack4为基础框架的微信小程序&#xff0c;之前一直没有记咋写的&#xff0c;现在总结记录一下。uniapp vite 的后面出。 文章目录 前言一、创建环境配置文件二、 配置 Taro 环境变量三、 创建请求封装四、如何上传到微信小程序体验版1.第二…