简介
数据库管理系统
- 应用程序(Navicat):基于数据库管理系统开发的可视化工具,否则需要通过命令行使用数据库管理系统
- 数据库管理系统(MySQL):数据的管理和操作(CRUD增删改查)
- 数据库(本地存储区域):数据的存储方式和空间(关系数据表等等)
如果不使用Navicat,那么要想操作Mysql数据库管理系统就需要通过命令行了
可以通过安装步骤理解上述关系
MYSQL下载安装
navicat下载安装
数据库的连接实质上是通过正确的用户名和密码连接数据库管理系统并指定要操作的数据库从而进行的SQL操作。
用户名和密码
username=root password=""
数据库管理系统运行端口并指定要操作的数据库
- SQLserver:
jdbc:sqlserver://LAPTOP-TFNNT1GH\\SQLEXPRESS;DatabaseName=book?useUnicode=true&characterEncoding=utf-8
- MYSQL:
jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf-8
知识拓展:
IDEA也自带数据库管理系统可视化工具(类似navicat),可以连接数据库管理系统(例如MYSQL)并进行可视化操作(注意:操作完后刷新就可以查看操作结果了,提高开发速度)。
JDBC数据库驱动包
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
不同的数据库需要下载不同的JDBC
一个JDBC可以在任何编译器里面驱动对应的数据库
因为SQL语句的语法只是类似,不同数据库基本都有自己专用的函数(微软还自己搞了一堆标准),如果sql语句用到了这些函数那就不能通用了
比如取当前日期,sqlserver是select getdate();oracle 是select sysdate from dual;类似的不同还很多.
通俗理解:JDBC就是数据库驱动(连接,传参SQL语句等等)的实体类的字节码(class)文件压缩后的jar包。
druid.jar包,连接数据库的properties文件
druid.properties文件的配置是.properties形式的(配置文件中参数)
druid简介
数据库连接池数据库连接池主要是用于和数据库进行连接、它可以负责管理、分配和释放数据库的连接
为什么需要数据库连接池:因为数据库在进行连接打开和关闭的时候对性能上有很大的消耗。当使用了数据库连接池它可以进行一些设置。如数据库和连接池有多少个长久的连接数量,也就是连接之后就不在关闭释放的路径,也叫空闲连接点
数据库连接池还可以通过管理线程连接数据库的数量从而管理并发用户的数量
数据源用于管理数据库连接池,它位于javax.sql.DataSouce中。它没有真正的数据,仅仅记录了连接是那个数据库,如何连接的。如odbc数据源,这个数据源仅仅只是它连接的名称也可以理解为一个标识的名称
注意:
url一定要写自己数据库的服务器名字,localhost还有127.0.0.1本人亲测无法使用,因为这是用于mysql数据库连接的配置语句。
SQL server JDBC.properties文件简介
username=sa
password=123456
url=jdbc:sqlserver://LAPTOP-TFNNT1GH\\SQLEXPRESS;DatabaseName=book?useUnicode=true&characterEncoding=utf-8
//涉及汉字操作需要设置?useUnicode=true&characterEncoding=utf-8用来统一编码。
// 此处声明连接的服务类型,所以druid是可以兼容所有流行数据库的,因为可以配置服务类型
driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
initialSize=5
maxActive=10
对比SQLserver和MYSQL的连接
- 连接登录的都是数据库管理系统SQLserver或者MYSQL(程序)。
- 数据库管理系统对于本地存储区域(数据库)进行管理和操作。
例如:
MYSQL是数据库管理系统用于增删改查,客户端navicat是为了方便操作数据库而设计的一种可视化,图形化软件。
MYSQL数据库
Navicat连接名只是为了自己在本地能快速识别连接的数据库是什么,只是针对电脑的使用者方便而自己起的名字。
便于分类,连接名下面不同的主机名用户名会连到不同的数据库,有个连接名便于区别数据库吧
比如在同一个局域网内,两台主机连接一个MySQL数据库,会根据主机号返回对应连接名创建的数据库。
SQL连接语句是连接的(student)数据库名称
String url="jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8";
conn= DriverManager.getConnection(url,"root","");//没有密码
properties文件
username=root
password=""
url=jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf-8
// 此处声明连接的服务类型,所以druid是可以兼容所有流行数据库的,因为可以配置服务类型
//涉及汉字操作需要设置?useUnicode=true&characterEncoding=utf-8用来统一编码。
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=10
SQLserver数据库
原理上和MYSQL数据库差不多,都是通过用户名和密码连接数据库管理系统。
SQLserver服务器是用来管理数据库和数据库相关的配置文件,因此先登录服务器才能使用对应的数据库。
username=sa
password=123456
url=jdbc:sqlserver://LAPTOP-TFNNT1GH\\SQLEXPRESS;DatabaseName=book?useUnicode=true&characterEncoding=utf-8
// 此处声明连接的服务类型,所以druid是可以兼容所有流行数据库的,因为可以配置服务类型
//涉及汉字操作需要设置?useUnicode=true&characterEncoding=utf-8用来统一编码。
driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
initialSize=5
maxActive=10
填坑
数据库分为本地数据库管理系统和远程数据库管理系统。
实际上,我本科阶段都是连接本地数据库然后在自己电脑上跑程序,所以直接用本地电脑IP地址(127.0.0.1/localhost):本地端口(3306)定位本地数据库就可以连接了。
同理可得连接远程数据库管理系统也是根据IP:端口实现定位。
DBeaver的报错是显示远程数据库管理系统返回的SQL报错,跟本地可视化软件没关系。于是就出现了相同操作不同报错,因为远程数据库管理系统不同。
并且数据库管理系统自身的设计问题也会导致正确的SQL语句报错。
最后
某位大佬关于配置方面的bug
2008SQLserver连接踩坑