JDBC---连接数据库

2023-11-13

编码实现

准备

1、建立一个maven工程,使用quick骨架
2、引入依赖

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

在这里插入图片描述

连接方式一

	@Test
    public void testConnection1() {
        try {
            //1.提供java.sql.Driver接口实现类的对象
            Driver driver =  new com.mysql.jdbc.Driver();

            //2.提供url,指明具体操作的数据
            String url = "jdbc:mysql://localhost:3306/test";

            //3.提供Properties的对象,指明用户名和密码
            Properties info = new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "abc123");

            //4.调用driver的connect(),获取连接
            Connection conn = driver.connect(url, info);
            System.out.println(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

说明:上述代码中显式出现了第三方数据库的API

连接方式二

@Test
    public void testConnection2() {
        try {
            //1.实例化Driver
            String className = "com.mysql.jdbc.Driver";
            Class clazz = Class.forName(className);
            Driver driver = (Driver) clazz.newInstance();

            //2.提供url,指明具体操作的数据
            String url = "jdbc:mysql://localhost:3306/test";

            //3.提供Properties的对象,指明用户名和密码
            Properties info = new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "abc123");

            //4.调用driver的connect(),获取连接
            Connection conn = driver.connect(url, info);
            System.out.println(conn);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

说明:相较于方式一,这里使用反射实例化Driver,不在代码中体现第三方数据库的API。体现了面向接口编程思想。

连接方式三

	@Test
    public void testConnection3() {
        try {
            //1.数据库连接的4个基本要素:
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "abc123";
            String driverName = "com.mysql.jdbc.Driver";

            //2.实例化Driver
            Class clazz = Class.forName(driverName);
            Driver driver = (Driver) clazz.newInstance();
            //3.注册驱动
            DriverManager.registerDriver(driver);
            //4.获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

说明:使用DriverManager实现数据库的连接。体会获取连接必要的4个基本要素。

连接方式四

@Test
    public void testConnection4() {
        try {
            //1.数据库连接的4个基本要素:
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "abc123";
            String driverName = "com.mysql.jdbc.Driver";

            //2.加载驱动 (①实例化Driver ②注册驱动)
            Class.forName(driverName);


            //Driver driver = (Driver) clazz.newInstance();
            //3.注册驱动
            //DriverManager.registerDriver(driver);
            /*
            可以注释掉上述代码的原因,是因为在mysql的Driver类中声明有:
            static {
                try {
                    DriverManager.registerDriver(new Driver());
                } catch (SQLException var1) {
                    throw new RuntimeException("Can't register driver!");
                }
            }

             */


            //3.获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

说明:不必显式的注册驱动了。因为在DriverManager的源码中已经存在静态代码块,实现了驱动的注册。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDBC---连接数据库 的相关文章

  • 由于 Cloud Foundry 上的 SSL 错误,JaxB 无法解组?

    我有一个 Web 应用程序 使用 thymeleaf Spring Boot AngularJS 和 Oracle sql Developer db 在本地 我能够连接并从 Oracle 获取值 但是当我将应用程序推送到 Cloud Fou
  • PreparedStatement缓存——它是什么意思(它是如何工作的)

    例如 我使用 c3p0 和一些定义的 maxStatements 来进行准备语句缓存 这个缓存到底有什么作用 它缓存什么样的数据 在什么级别 数据库 应用程序 从例子中理解它会很好 例如我有一个查询 从某个表中选择 其中某个列 现在我在未缓
  • com.microsoft.sqlserver.jdbc.SQLServerException:与主机 localhost、端口 1433 的 TCP/IP 连接失败 [重复]

    这个问题在这里已经有答案了 我不断收到此错误 我尝试了 Stack Overflow 如下 中的一种解决方案 但它对我不起作用 连接到 SQL Server 时出现 SQL 异常 https stackoverflow com questi
  • 为什么 JDBC 是动态加载而不是导入? [复制]

    这个问题在这里已经有答案了 在 JDBC 中 我只看到使用的示例 Class forName com mysql jdbc Driver true cl 还没有看到有人使用 import com mysql jdbc Driver 是不是因
  • Oracle JDBC:用户名/密码无效 (ora-01017)

    我在与 Oracle 数据库服务器的 jdbc 连接上遇到了一个奇怪的问题 我们在 tomcat 服务器上运行应用程序 这些应用程序使用 oracle 数据库 所有应用程序都使用相同的凭据 应用程序全天运行良好 晚上没有活动 早上 当应用程
  • 网络适​​配器无法建立连接 - Oracle 11g

    我编写了一个 servlet 程序 我希望它连接到我的 Oracle 数据库 但它给了我一个错误 我正在使用 Eclipse Helios Tomcat 6 0 37 Oracle 11g 11 2 0 1 0 ojdbc6 jar 在服
  • JDBC 连接池选项:DBCP 与 C3P0 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 适用于 Java JDBC 的最佳连接池库是什么 我正在考虑两个主要候选者 免费 开源 阿帕奇 DBC
  • android sqlite 一次读取所有行

    有没有办法读取 sqlite 表中的所有行并在文本视图中立即显示它们 这就是我阅读它们的方式 它逐行阅读 retrieves all the titles public Cursor getAllTitles return db query
  • 在 Java 1.7.0 下运行的 SQL-Server (MSSQL-JDBC 3.0) 中的日期列检索为过去 2 天

    当使用 SQLServer2008 从 SQLServer2008 检索 DATE 类型的列时 出现奇怪的效果在官方 Oracle JDK 1 7 0 下运行时 主机操作系统是Windows Server 2003 所有日期列均检索为two
  • mariadb: jdbc: setTimestamp 截断毫秒

    在我看来 如果我使用准备好的语句将它们插入到我的 mariadb 中 毫秒就会被截断 谷歌搜索并不成功 我发现了很多类似的问题 这些问题要么已解决 要么不适用 但很难相信我是唯一一个遇到这个问题的人 所以我想在向 mariadb 提交错误之
  • PostgreSQL JDBC4 的连接池

    最近我从以下网站下载了 PostgreSQL 的 JDBC 驱动程序here https jdbc postgresql org download html 由于我使用的是 Java 1 7 JVM 并且它是这样写的 如果您使用 1 6 或
  • 使用 JDBC 3.0 实现对嵌套事务的支持

    我们的遗留应用程序使用 JDBC 3 0 它通过实现自己的事务管理器来支持事务 该事务管理器能够为每个线程返回相同的 JDBC 连接 我最近发现的问题是它不支持嵌套事务 如果一个事务在另一个事务中启动 那么在内部事务上下文中运行的每个 SQ
  • Tomcat 连接池与准备好的语句缓存

    从 DBCP 连接池升级到 Tomcat 自己的实现 基于优秀的比较here http tomcat apache org tomcat 7 0 doc jdbc pool html Introduction 我有点困惑为什么他们放弃了这两
  • 获取 Oracle JDBC 连接上的 MySQL 错误堆栈跟踪

    我在使用连接字符串进行 Oracle JDBC 连接时遇到非常奇怪的错误 我将用户名指定为 sys 应该是 sys as sysdba 理想情况下 它应该来自 ojdbc6 jar 但就我而言 它来自 mysql connector jav
  • hive查询无法通过jdbc生成结果集

    我是 Hive 和 Hadoop 的新手 在我的教程中 我想将表创建为 import java sql SQLException import java sql Connection import java sql ResultSet im
  • 如何在java中执行复合sql查询?

    如何执行以下查询并通过准备好的语句检索结果 INSERT INTO vcVisitors sid VALUES SELECT LAST INSERT ID 有没有办法同时执行这两个语句 我尝试执行以下操作 Connection con Db
  • 将 CSV 文件读入 Java 作为数据库表

    我发现了很多关于使用 Java 读取 CSV 的帖子 并且他们所指向的 API 在读取 CSV 文件时都采用了面向行的方法 就像 当你得到一行时 获取每一列的值 我希望有一个更高级别的 API 比如在 Perl 中 DBI 允许您在 CSV
  • 为什么 Clojure MySQL 查询结果中出现“M”

    我有一个返回一行的 Clojure 查询 下面是返回行 映射 的部分打印输出 employer percent 0 00M premium 621 44M 这两列在mysql表中分别是decimal 5 2 和decimal 7 2 为什么
  • BoneCP 和 Derby - 如何正确关闭

    I have BoneCP CONNECTION POOL CONNECTION POOL getConfig setJdbcUrl jdbc derby database shutdown true Connection connecti
  • H2控制台看不到JAVA创建的表

    我已经从以下位置下载了 H2 控制台http www h2database com html download html http www h2database com html download html我已经在我的中配置了 URLjdb

随机推荐

  • ctf.show web3 文件包含+php伪协议+命令执行

    ctf show web3 php伪协议 文件包含 命令执行 题目的提示 一开始的页面 看到这个语句 那就是文件包含了 先试下file etc passwd 有反应 试下有没有flag txt文件 好像没有这个文件 那现在我们利用php伪协
  • Ubuntu18.04找不到wifi适配器解决办法以及怎么上网

    目录 一 有线上网办法 二 ubuntu找不到wifi适配器解决办法 三 有线无线均上不了网办法 四 最终问题解决 写在前面 如果大家已经尝试了很多方法进来的 可以先看看我目录里的第四部分 说不定跟我同样的问题 一 有线上网办法 拿起你的手
  • 读傅里叶级数有感

    老实讲 傅里叶级数还真的挺厉害的 但是 想到这个东西的人很厉害 把它说明白的人也很厉害 唯一不厉害的就是 指定我们教材的那帮人和学这些教材出来自以为他们掌握了这些内容却实际上根本讲不明白的人 好吧 其实不得已 看到图像可以从时域和频域两个维
  • 五万字整理Mybatis 入门只需要一篇文章

    这里写目录标题 一 简介 1 1 什么是mybatis 1 2 持久化 1 3 持久层 1 4 为什么需要学习mybatis 二 mybatis中的专业名词 三 第一个mybatis程序 3 1 搭建环境 3 1 1 创建一个数据库 3 1
  • 堆栈详解(数据与内存中的存储方式)

    转自 http www 360doc com content 11 0428 18 6580811 112988089 shtml char r hello word char b hello word r w b w 其实应该是语法错误
  • 从远程桌面客户端提取明文凭证的工具RdpThief

    介绍 远程桌面 RDP 是用于管理Windows Server的最广泛使用的工具之一 除了被管理员使用外 也容易成为攻击者的利用目标 登录到RDP会话的凭据通常用于是具有管理权限的 这也使得它们成为红队行动的一个理想目标 站在传统的角度看
  • Java实现S-DES加密算法

    S DES 为了更好的理解DES算法 美国圣塔克拉拉大学的Edward Schaefer教授于1996年开发了Simplified DES方案 简称S DES方案 它是一个供教学二非安全的加密算法 它与DES的特性和结构类似 但参数小 明文
  • IDEA Services窗口启动应用后突然不显示端口号

    转载 原先可以显示端口号的 但是换了个工程以后突然就不显示了 网上对于新安装的idea不显示端口号的解决方案并不适用 好在找到了解决办法 处理前 处理后 1 打开文件管理器 2 打开路径C Users l用户名 AppData Local
  • narwal无法连接机器人_懒无止境 能自己洗抹布的云鲸J1扫拖机器人

    0 篇首语 如果让我总结过去的2019年又哪几样产品 显著的提升了我的幸福感让生活变得更加方便 那么智能指纹锁和扫地机器人一定可以排在最前面 指纹锁其实不用多说出门无需担心没带钥匙 抬手就能开门的流畅体验确实是非常非常的方便 而扫地机器人也
  • centos6.5 搭建hadoop 开发环境(单台服务器)

    一 安装环境 硬件 虚拟机 操作系统 Centos 6 4 64位 IP 120 25 56 93 主机名 120 25 56 93 安装用户 root 二 安装JDK 安装JDK1 6或者以上版本 这里安装jdk1 7 0 71 具体安装
  • vuecli4适配pc端

    vuecli4适配pc端 1 首先安装amfe flexible npm i S amfe flexible 在main js中引入 import amfe flexible 2 安装postcss px2rem npm i postcss
  • el-menu菜单进行路由跳转

    el menu菜单进行路由跳转 el menu 添加 default active this router path 和 router default active前面要有
  • 实时音频编解码之十四 Opus编码-SILK编码-长时预测

    本文谢绝任何形式转载 谢谢 4 1 12 线性预测系数计算 线性预测分为语音和非语音两种情况 该模块的输入是pitch估计模块白化之后的信号 对于语音帧 白化后的信号依然含有较强的pitch特征 因而为了在相同的比特率下获得更高的编码质量需
  • 研发效能工程实践-代码评审

    什么是代码评审 Code Review的定义 是一项单人或者多人通过阅读别人的源代码来检查代码质量的软件质量保证活动 定义有点绕口 其实就是写完代码之后让经验相对丰富一点的同事帮你检查一下你的代码 当然这个检查应该是多方面的 包括但不限于你
  • Goby漏洞更新

    漏洞名称 PbootCMS 3 1 2 远程代码执行漏洞 CVE 2022 32417 English Name PbootCMS 3 1 2 RCE CVE 2022 32417 CVSS core 9 0 漏洞描述 PbootCMS是P
  • RTP 包格式 详细解析

    H 264 视频 RTP 负载格式 1 网络抽象层单元类型 NALU NALU 头由一个字节组成 它的语法如下 0 1 2 3 4 5 6 7 F NRI Type F 1 个比特 forbidden zero bit 在 H 264 规范
  • 装饰器是什么?一文详解装饰器原理及 Python 计时器实战

    在本文中 我将和大家一起了解装饰器的工作原理 如何将我们之前定义的定时器类 Timer 扩展为装饰器 以及如何简化计时功能 最后对 Python 定时器系列文章做个小结 喜欢记得收藏 关注 点赞 文末提供技术交流群 假设我们需要跟踪代码库中
  • 跟我学,你的服务器安全吗?第一篇----centos系统安全篇

    目录 前言 本文主要为centos的系统安全 常规基础操作 服务器使用密钥对登陆 相对密码登录更加安全 配置ECS自动快照策略 linux系统登陆弱口令检查 系统登陆弱口令 重要软件OPENSSH漏洞 用于SSH连接服务器的 基线保障 即系
  • VUE+WebSocket实现实时推送

    data return id 1 webSock null lockReconnect false 避免重复连接 mounted 调取websocket方法 写在mounted方法中 this initWebSocket methods 发
  • JDBC---连接数据库

    编码实现 准备 1 建立一个maven工程 使用quick骨架 2 引入依赖