package com.chanda.connection;/*** @author 禅达啊* @date 2020/9/22 15:46*/
import org.junit.Test;import java.sql.Connection;
import java.sql.Driver;
import java.util.Properties;public class ConnectionTest {//方式一@Testpublic void testConnection1() throws Exception{Driver driver=new com.mysql.jdbc.Driver();//jdbc:mysql:协议//localhost:ip地址//3306:默认mysql的端口号//test:test数据库String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8";//将用户名和密码封装在Properties中Properties info=new Properties();//用户名info.setProperty("user","root");//密码info.setProperty("password","6mnlzglzn");Connection conn=driver.connect(url,info);System.out.println(conn);}}

JDBC连接方式一:
1.创建Driver对象,
2.导入数据库地址到url字符串中
3.创建Properties类,对相关键值对赋值,即数据库的用户名和密码
4.创建链接对象Connection,利用driver.connect(url,info);

基于本身的一些报错,做个总结
第一点,mysql的时区要改成东8区
第二点,驱动与数据库字符集不匹配,两个解决办法,一个办法是换最新版本的mysql-connection-java.jar,另一个解决方法是在url后加上字符集编码,如下

String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8";

第三个不属于JDBC,Test测试类的问题,如若使用junit-4.12需要再手动导入hamcrest-core。

JDBC连接方式二:

@Testpublic void testConnection2() throws Exception{//1.获取Driver实现类对象,使用反射Class clazz=Class.forName("com.mysql.jdbc.Driver");Driver driver=(Driver)clazz.newInstance();//2.提供要连接的数据库String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8";Properties info=new Properties();info.setProperty("user","root");info.setProperty("password","6mnlzglzn");//4.获取链接Connection conn=driver.connect(url,info);System.out.println(conn);}

相比于方式一,方式二使用反射获取Driver类对象,更容易扩展。

JDBC连接方式三:

//方式三:使用DriverManger替换Driver@Testpublic void testConnection3() throws Exception{//1.获取Driver实现类对象,使用反射Class clazz=Class.forName("com.mysql.jdbc.Driver");Driver driver=(Driver)clazz.newInstance();//2.提供另外三个链接的基本信息String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8";String user="root";String password="6mnlzglzn";//注册驱动DriverManager.registerDriver(driver);//获取链接Connection conn=DriverManager.getConnection(url,user,password);System.out.println(conn);}

相当于是先创建一个Driver对象,然后通过驱动管理器注册这个已经创建好的对象,注册成功后驱动管理器就可以调用连接的方法得到Connection对象

JDBC连接方式四:

//方式四:可以只是加载驱动,不用显示的注册驱动过了@Testpublic void testConnection4() throws Exception{//1.提供三个链接的基本信息String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8";String user="root";String password="6mnlzglzn";//2.加载Driver,执行了Driver中的静态代码块//相较于方式三,可以省略如下的操作://再mysql的Driver的Driver实现类中,声明了如下的操作//java.sql.DriverManager.registerDriver(new Driver());//不需要再进行注册驱动的操作了Class.forName("com.mysql.jdbc.Driver");
//        Driver driver=(Driver)clazz.newInstance();
//        //注册驱动
//        DriverManager.registerDriver(driver);//3.获取链接Connection conn=DriverManager.getConnection(url,user,password);System.out.println(conn);}

mysql的实现类中静态代码块已经注册了驱动,所以不需要我们手动注册了。

JDBC连接方式五(最终版):

 //方式五(最终版):将数据库连接需要的4个基本信息生命在配置文件中,通过读取文件的方式,获取链接@Testpublic void testConnection5() throws Exception{//1.读取配置文件中的4个基本信息InputStream is=ConnectionTest.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");//2.加载驱动Class.forName(driverClass);//3.获取链接Connection conn=DriverManager.getConnection(url,user,password);System.out.println(conn);}

这样把信息写在配置文件中,以后想要改连数据库,或者不用mysql了,只需要改配置文件即可。实现了数据和代码的分离。

JDBC连接时的一些问题相关推荐

  1. JDBC连接时所犯错误1.字符集设置不合适2.连接MySQL8.0社区版时时区不一致3..包名不能以Java.命名4.驱动被弃用

    Microsoft JDBC Driver 的主页为:https://msdn.microsoft.com/en-us/data/aa937724.aspx 下载所需驱动 今天连接时报了四次错,记录下 ...

  2. hive jdbc连接时的乱码问题

    之前写了个web端的程序用来控制从oracle向Hadoop导数据,同时在页面上可以通过jdbc调用hive,发现中文显示为乱码,因为是装在windows2003上 在网上查了一下,通过修改hive的 ...

  3. mysql8.0JDBC驱动下载以及JDBC连接时遇到的问题

    笔者最近重温JDBC,由于换了数据库版本,安装了最新的mysql8.0.26,在编写java代码时仍然用5版本的驱动是行不通的,一直是连接不到数据库的. 于是就去官网下了最新版本的驱动. 下载地址: ...

  4. jdbc-connect-oracle12c-pdb/cdb(jdbc连接oracle12c的pdb和cdb)

      1       本文简介: 通过特意引发问题,聚焦问题,解决问题,并循序渐进 最后总结jdbc连接oracle12c中cdb和pdb的条件. 软件环境:Redhat7.1+orcacle12c 2 ...

  5. JDBC连接SQL Server 2005问题

    java.sql.SQLException: Network error IOException: Connection refused: connectCaused by: java.net.Con ...

  6. 数据层优化-jdbc连接池简述、druid简介

    终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化 ...

  7. 在java中使用JDBC连接mysql数据库时的服务器时区值无法识别或表示多个时区的问题解决方案

    项目场景: 在java中使用JDBC连接mysql数据库时,报以下的错:Exception in thread "main" java.sql.SQLException: The ...

  8. 咋样查mysql的url_eclipse用jdbc连接mysql数据库时,url是填什么?怎样找出地址?

    展开全部 jdbc连接mysql数据62616964757a686964616fe78988e69d8331333337623535库的url为: jdbc:mysql://主机名或IP抵制:端口号/ ...

  9. JDBC连接MySQL时日志出现警告WARN: Establishing SSL connection without server's identity verification is not re

    1.tomcat日志错误信息 Thu Jul 19 18:01:03 CST 2018 WARN: Establishing SSL connection without server's ident ...

最新文章

  1. ps -aux 和ps -elf 区别(查看进程)
  2. J2EE技术(三)——JMS
  3. sklearn文档-第一次笔记
  4. dump mysql database,Mysql Database 逻辑备份: mysqldump
  5. 腾讯宣布捐赠1亿元驰援河南;苹果回应iPhone 安全隐患;贝索斯完成10分钟太空之旅|极客头条...
  6. 【RMAN】正确删除归档日志的方式
  7. 【Unity编辑器】UnityEditor多重弹出窗体与编辑器窗口层级管理
  8. 运算放大器权威指南(第3版) (op amps for everyone)_OP高质量,ED多版本,有钱的动物狂想曲就是能为所欲为...
  9. 窝囊同事做测试三年未涨工资,被开当天,bat全部大佬门口迎接!
  10. Android/iOS及设计中ARGB颜色值百分比透明度换算
  11. 如何恢复被杀毒软件删除的文件
  12. 计算机常用符号对应的英文
  13. 第七周 位运算、布隆过滤、LUR和排序
  14. 转给计算机专业的准大学生!
  15. python调用微信客户端_用Python编写的简化版微信客户端
  16. 2.本地配置yum源
  17. java部分基础知识 (二):计算机组成原理 原码 补码 反码 按位符 移位符 按位与 按位或 按位抑或 非 分析hashMap的put方法原理
  18. EI期刊《系统工程与电子技术》投稿经历
  19. Windows VMware 装 macOS 全网最详细
  20. 圈地运动-组成面积大于0多边形

热门文章

  1. 世上最经典的爱情诗句 1
  2. 华为HCIP RouteSwitch认证学习笔记总结
  3. XBOX ONE X 黑屏无信号 换HDMI芯片
  4. 大学撤销计算机学院,曾经炙手可热的4大专业,如今被各大高校拟撤销,考生需谨慎...
  5. 微信发布重磅消息:视频号将推出创作分成计划和付费订阅,搜一搜升级“问一问”…
  6. RabbitMQ 正确使用姿势
  7. 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 =AABCD和s2 = BCDAA,返回1给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCD
  8. P1346 电车(floyd)
  9. 极米科技上市:发明专利曾被宣告无效,钟波的“5年颠覆”豪言落空
  10. 随想录二刷Day15——二叉树