【JDBC】-- Java连接数据库方法(Mysql8+idea)

2023-10-27

(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。

Java如何连接数据库?

下面使用Mysql8版本,编译器使用idea

一、获取Mysql数据库驱动文件(Driver)

下载链接:https://dev.mysql.com/downloads/connector/j/

 下载完成得到一个压缩包,解压得到文件

需要的是文件里的.jar后缀文件

 二、导入驱动

打开idea将驱动文件复制粘贴到工程项目下的lib文件下(如果没有自己创建)

 然后右键驱动文件选择添加为库,点击进去点击确定

 最后出现箭头可展开状态则成功

 三、连接方式

代码实现上有五种连接数据库的方式。

方式五为最终方式。

1、方式一

import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.Properties;
public class Connection1 {
    public static void main(String[] args) throws SQLException {
            //获取驱动,创建连接对象
            Driver driver = new com.mysql.cj.jdbc.Driver();
            //jdbc:mysql:协议
            //localhost:ip地址
            //3306:默认端口号
            //test:数据库
            String url = "jdbc:mysql://localhost:3306/zhangxiuyu";
            //将用户名和密码封装再Properties
            Properties info = new Properties();
            info.setProperty("user","root");//用户名
            info.setProperty("password","ad");//密码
            Connection conn = driver.connect(url,info);
            System.out.println(conn);
    }
}

控制台出现这样的信息则表示成功。  

 

2、方式二

方式二是对方式一方法的迭代,对一的改进

可以不出现第三方的api,使程序具有更好的可移植性。

import java.sql.Connection;
import java.sql.Driver;
import java.util.Properties;

public class Connection2{
    public static void main(String[] args) throws Exception{
        Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        String url = "jdbc:mysql://localhost:3306/zhangxiuyu";
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("password","ad");
        Connection conn = driver.connect(url,info);
        System.out.println(conn);
    }
}

3、方式三

方式三是方式二的迭代

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
public class Connection3 {
    public static void main(String[] args) throws Exception {
        //获取对象
        Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        //提供连接基本信息
        String url = "jdbc:mysql://localhost:3306/zhangxiuyu";
        String user = "root";
        String password = "ad";
        //获取连接
        Connection conn = DriverManager.getConnection(url,user,password);
        System.out.println(conn);
    }
}

4、方式四

方式四是对方式三的优化。

Driver实现类里有个静态代码块,类加载时执行里面的代码块,即加载驱动时已经自动注册驱动。

import java.sql.Connection;
import java.sql.DriverManager;
public class Connection4 {
    public static void main(String[] args) throws Exception {
                //加载驱动
                Class.forName("com.mysql.cj.jdbc.Driver");
                //提供连接基本信息
                String url = "jdbc:mysql://localhost:3306/zhangxiuyu";
                String user = "root";
                String password = "ad";
                //获取连接
                Connection conn = DriverManager.getConnection(url,user,password);
                System.out.println(conn);

    }
}

5、方式五(最终方式)

对前面的最终优化。

将数据库连接的四个基本信息声明在配置文件中,通过读取配置文件获取连接。

这样的好处是:

1、实现代码与数据分离

2、如需修改连接信息,可避免程序重新打包

Ⅰ、新建配置文件

在类下新建文件jdbc.properties;

将基本信息写入到文件中。

user=root
password=ad
url=jdbc:mysql://localhost:3306/zhangxiuyu
driverClass=com.mysql.cj.jdbc.Driver

Ⅱ、主类引入

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class Connection5 {
    public static void main(String[] args) throws Exception {
        //读取配置文件基本信息
        InputStream is = Connection5.class.getClassLoader().getResourceAsStream("jdbc.properties");

        Properties pros = new Properties();
        pros.load(is);

        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url");
        String driverClass = pros.getProperty("driverClass");
        //加载驱动
        Class.forName(driverClass);
        //获取连接
        Connection conn = DriverManager.getConnection(url,user,password);
        System.out.println(conn);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【JDBC】-- Java连接数据库方法(Mysql8+idea) 的相关文章

  • 埃拉托色尼筛法 - 实现返回一些非质数值?

    我用 Java 实现了埃拉托斯特尼筛法 通过伪代码 public static void sieveofEratosthenes int n boolean numArray numArray new boolean n for int i
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • 具有“日期之间”的 CakePHP 模型

    我有一个很大的数据集 超过十亿行 数据在数据库中按日期分区 因此 我的查询工具必须在每个查询上指定一个 SQL Between 子句 否则它将必须扫描每个分区 而且 它会在返回之前超时 所以 我的问题是 分区的数据库中的字段是日期 使用 C
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 从休眠乐观锁定异常中恢复

    我有一个这样的方法 Transactional propagation Propagation REQUIRES NEW public void doSomeWork Entity entity dao loadEntity do some
  • MySQL 两种日期格式之间的转换

    用户将以这种格式输入日期 2017 年 2 月 17 日 存储在 mysql 数据库中的日期格式如下 2015 02 17 00 00 00 我想做的是 SELECT FROM insurance where DATE FORMAT in
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • 无法加载身份验证插件“caching_sha2_password”

    我正在将 MySQL 8 0 与 MySQL Workbench 连接并收到以下错误 无法加载身份验证插件 caching sha2 password dlopen usr local mysql lib plugin caching sh
  • sql直接获取表行数的方法

    stackoverflow 的朋友们大家好 我的例行程序中有一个我认为不必要的步骤 假设您想从图库中获取所有图像 并限制每页一定数量的图像 db PDO object start pagenum x images per page limi
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • parent_id 是外键(自引用)并且为 null?

    浏览 Bill Karwin 的书 SQL Antipatterns 第 3 章 Naive Trees 邻接表 父子关系 有一个注释表的示例 CREATE TABLE Comments comment id SERIAL PRIMARY
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • try-with-resources 中出现死代码警告,但翻译后的 try-catch-finally 中没有出现死代码警告

    以下代码使用try 有资源 https docs oracle com javase specs jls se7 html jls 14 html jls 14 20 3Java 8 中引入的构造 偶尔抛出 方法被声明为抛出一个偶尔的异常
  • 错误 1305 (42000):保存点...不存在

    我的 MYSQL 数据库中有这个 SQL 存储过程为空 所以我猜没有隐式提交 DROP PROCEDURE IF EXISTS doOrder DELIMITER CREATE PROCEDURE doOrder IN orderUUID

随机推荐

  • idm下载视频

    idm下载视频 安装后 地址为 链接 下载地址 提取码 fgzv 安装后 设置浏览器插件 完成 参考文章
  • CentOS下安装yum

    0 首先檢查yum有沒有安裝 yum v yum update 如果有安裝的話 可直接用更新命令操作 在Linux里面依次输入下面的命令 1 下载最新的yum 3 2 28 tar gz并解压 wget http yum baseurl o
  • c语言------字符数组和字符串的关系

    1 字符数组和字符串的定义 字符数组 指用来存放字符的数组 字符数组的定义 用来存放字符量的数组称为字符数组 其定义 的一般形式是 char数组名 数据长度 字符数组用于存放字符或字符串 字符数组中的 一个元素存放一个字符 它在内存中占用两
  • 笔试题1:int类型的取值范围是什么?

    笔试题1 int类型的取值范围是什么 Java中int类型采用4个字节 一共32位 第一位用于正负号表示 因此其取值范围 231 231 1
  • Latex的使用技巧

    0 引用 Latex公式放符号正下方 Latex中实现表格和图片的跨栏显示 LATEX之图片位置 常用数学符号的 LaTeX 表示方法 算法简单示例 overleaf 参考文献中URL过长 关于插入图片的基础知识 Latex中的长度信息 算
  • 类模板、函数模板以及类成员函数在类外定义情况

    1函数模板的写法 函数模板的一般形式如下 Template
  • Shuffle 操作

    在spark中的主要操作 触发一个叫作shuffle的事件 shuffle是spark对于重新分布数据的机制 因此数据 能在partitions上进行不同的分组 Shuffle包含在executors和machines上的数据复制 使得 s
  • Maven下载

    1 访问Maven官网Maven Welcome to Apache Mavenhttps maven apache org 2 单击 DownLoad 出现以下界面 3 点击 apache maven 3 8 6 bin zip 链接 下
  • error C2061: syntax error : identifier 'SHFILEINFOW' // 无法解析的外部符号 wWinMain,该符号在函数 WinMainCRTStartup

    1 gt StdAfx cpp 1 gt E Program Files Windows CE Tools wce600 DbAu13xx include MIPSII shellapi h 321 error C2061 syntax e
  • 接口处理请求时间过长,前台响应“服务器超时”的解决办法

    数据计算量过大 接口响应时间过长时 网关会报超时 页面就挂了 没有很好的解决办法 所以采用了如下解决办法 1 将原本的一个接口拆分为3个 三个接口异步操作 三个接口作用及描述如下 接口1 获取本地异步操作的唯一标识 唯一且加密后的code值
  • app php与html5,uniapp与HTML的区别是什么

    区别 1 uniapp是一个框架 而HTML是一种标记语言 2 组件 标签有差异 例p改成view span font改成text a改成navigator img改成image 3 uniapp不支持dom操作 HTML支持 本教程操作环
  • [2023.7.17]7 CPU Front-End Optimizations

    CPU前端 FE 组件在第3 8 1节中进行了讨论 大多数情况下 CPU FE的低效率可以描述为后端等待执行指令 但FE无法提供指令的情况 结果是 在没有执行任何实际有用工作的情况下浪费了CPU周期 由于现代处理器是4宽度 即 它们每个周期
  • 【汤圆名叫“小刺猬”和“雪化了”】——吃另类汤圆 听奇特民俗

    听奇特民俗 TITLE 汤圆名叫鈥溞 题澓外溠 蒜潯库斺敵粤砝嗵涝 听奇特民俗 gt 把汤圆微出创意来 吃另类汤圆听奇特民俗感世界之大无奇不有 叹那些正在消失的民俗 我挺懒的 而且又不是那么爱吃汤圆 减肥 所以就没有那么勤快来DIY 但节总
  • python字符串与数字类型转换

    str与int i 10 s str i s 10 s 1 i int s i 1 str与float st 4 t float st t 0 4 st 0 4 t float st t 0 4 t 0 4 st str t st 0 4
  • libevent (一) socket属性设置与初始化操作

    socket属性设置与初始化操作 libevent是一个事件触发的网络库 适用于windows linux bsd等多种平台 内部使用select epoll kqueue等系统调用管理事件机制 著名分布式缓存软件memcached也是li
  • 小程序怎么搭建?学会这些技巧,开启创业之路

    随着移动互联网的发展 小程序成为了一种重要的创业工具 小程序具有开发周期短 运营成本低 用户体验好等特点 被越来越多的企业和个人用来实现商业价值 本文将通过一个案例来介绍小程序的搭建技巧 帮助创业者更好地开启创业之路 案例介绍 某家生鲜电商
  • CentOS下安装配置Phabricator

    1 下载快捷安装sh http download csdn net detail u012547633 9882697 把centos版的phabricator安装脚本下载到opt目录并安装 cd opt chmod 777 install
  • java版本号分段比较_版本号判断,例如:1.0.0比较1.0.1

    有的时候可能会判断客户端的版本号信息 多位数的版本号判断做个记录 代码分享者 zzp 注意 Java中应该吧分割的正则使用 来分割小数点字符串 分割 NSArray curVerArr currentVersion componentsSe
  • 了解Chat GPT

    CHATGPT是一款强大的人工智能语言模型 可以回答任何问题和开启有趣的对话 以下是一些使用CHATGPT的技巧和提示 提问明确 CHATGPT能够回答任何问题 但它需要清晰和明确的问题来给出准确的答案 因此 在提问时要尽可能明确和具体 尝
  • 【JDBC】-- Java连接数据库方法(Mysql8+idea)

    Java Database Connectivity 简称JDBC 是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口 提供了诸如查询和更新数据库中数据的方法 Java如何连接数据库 下面使用Mysql8版本 编译器使用ide