当前位置: 首页 > wzjs >正文

佛山网站制作免费网站建设

佛山网站制作,免费网站建设,网站优化排名软件网,公司网站设计要求目录 一. 将MySQL对应版本的jar包放入Java项目中 1. 准备工作 2. 复制到Java项目 二. 获取数据库连接 1. 连接Mysql数据库的URL 2. 连接数据库的用户名 3. 连接数据库的密码 4. 通过反射实例化 三. Properties文件用法 1. properties文件介绍 2. Properties工具类 a.…

目录

一. 将MySQL对应版本的jar包放入Java项目中

 1. 准备工作

2. 复制到Java项目

二. 获取数据库连接

1. 连接Mysql数据库的URL

2. 连接数据库的用户名

3. 连接数据库的密码

 4. 通过反射实例化

三. Properties文件用法

1. properties文件介绍

2. Properties工具类

a. load( InputStream is )

b. getProperty( String key )

3. 新建Properties文件

4. 解决文件中文问题

5. properties文件写法

四. 使用properties文件优化连接

1. 基本操作

a. 实例化Properties对象

b. 获取读取properties文件的输入流对象

c. 通过给定的输入流对象读取properties文件并解析

d. 获取properties文件中的内容

2. 优化获取数据库连接

a. properties文件内容

b. 获取连接

五. 封装JDBC工具类


前言

本文来讲解,如何获取Java与MySQL的连接以及如何优化数据库的连接并且JDBC的工具类

文章详解,通俗易懂,旨在帮助读者更好的理解和掌握JDBC数据库连接

个人主页:主页

一. 将MySQL对应版本的jar包放入Java项目中

 1. 准备工作

jar:数据库驱动
如果要和数据库通信,就要借助数据库驱动。数据库驱动本质上是一组 Java 类
先在官网下载对应的MySQL的jar包
这里用MySQL5.7版本来演示

可以先通过cmd里,输入mysql --help 来找到自己的MySQL版本

看这个表格,找到自己jdk版本对应的jar,再到官网里下载
 jar包官网传送门:官网

MySQL 版本推荐的 MySQL Connector/J 版本
5.15.1.x
5.55.1.x、5.2.x
5.65.1.x、5.2.x、5.6.x
5.75.1.x、5.2.x、5.6.x、5.7.x
8.05.1.x、5.2.x、5.6.x、5.7.x、8.0.x

5.7版本的,我是下载的5.1.48版本jar包

2. 复制到Java项目

复制对应的jar包

新建一个java项目
新建一个lib目录


单击lib,复制到lib目录


确定后,这个jar包只是放在目录里
现在就要开始将这个变成一个库
右击jar包 ---> 添加到库
这样就可以获取里面的类了

二. 获取数据库连接

1. 连接Mysql数据库的URL

URL格式:jdbc:mysql://[主机名]:[端口号]/[数据库名]?[参数名]=[参数值]
注:每个数据库的写法不一样,这里以MySQL为例

// 连接Mysql数据库的URL
// localhost 代表本机
// 如果没有修改端口号的话,MySQL默认是3360
// YiBeiGen 是数据库名字
String url = "jdbc:mysql//localhosost:3360/YiBeiGen"

2. 连接数据库的用户名

String name = "root";

3. 连接数据库的密码

连接数据库的密码
String passward = "8383";

 4. 通过反射实例化

Class.forName("com.mysql.jdbc.Driver");

这里是要理解的,为什么要反射实例化?
就是因为通过这个反射来加载这个Driver类,目的是为了出发static块
先来看看Driver类

5. 通过DriverManager对象获取数据库的连接对象

// 三个参数分别是
// 1. 连接Mysql数据库的URL
// 2. 连接数据库的用户名
// 3. 连接数据库的密码
// 我们在上面都实现过
Connection connection = DriverManager.getConnection(url, name, pwd);

完整代码

public class JdbcTest {public static void main(String[] args) throws ClassNotFoundException, SQLException {// 连接Mysql数据库的URLString url = "jdbc:mysql://localhost:3306/YiBeiGen";// 连接数据库的用户名String name = "root";// 连接数据库的密码String pwd = "8383";// 通过反射实现数据库驱动的加载与注册// 通过反射实例化// 添加数据库驱动的目的是翻译要执行的sql语句 // 只是加载这个类,目的是为了触发static块// 那么Driver类已经实例化出来了,并且放到了DriverManager当中Class.forName("com.mysql.jdbc.Driver");// 通过DriverManager对象获取数据库的连接对象Connection connection = DriverManager.getConnection(url, name, pwd);System.out.println(connection);}
}

 
输出结果类似这样没有报错就可以
如果报错了,就先检查密码以及数据库名称是否和MySQL的一致
如果一致都还报错,那么就可以在“连接数据库的URL”中再添加一个 “?useSSL=false"

url = "jdbc:mysql://localhost:3306/YiBeiGen?useSSL=false";

三. Properties文件用法

先讲作用:因为用刚刚这种原始的代码写,会出现一个问题,就是硬编码
硬编码:对于可变的内容,写死在代码中,就像刚刚的那个连接数据库的代码,就是一个死的,它的数据库库名字,连接数据库的URL以及密码都是写死的,这就是硬编码
硬编码的缺点就是,后序如果是另一个人用的这个代码,就要修改源代码,这就很麻烦
那么为了解决这个硬编码问题,就可以通过Properties文件来解决

property的英文意思:属性

1. properties文件介绍

后缀properties的文件是一种属性文件。这种文件以key=value格式存储内容
Java中可以使用Properties工具类来读取这个文件
项目中会将一些配置信息放到properties文件中,所以properties文件经常作为配置文件来使用

2. Properties工具类

Properties工具类,位于java.util包中,该工具类继承自Hashtable<Object,Object>
通过Properties工具类可以读取.properties类型的配置文件

Properties工具类中常用方法

a. load( InputStream is )

load英文意思:加载
通过给定的输入流对象读取properties文件并解析

b. getProperty( String key )

根据key获取对应的value

3. 新建Properties文件

右击包 ---> 新建 ---> 文件

在新建文件对话中,新建文件名字
注意:名字可以随意(最好见名知意),扩展名一定要是properties,扩展名都是小写!

4. 解决文件中文问题

我们创建好这个文件后,就可以在里面些内容了
但是因为文件默认编码的原因,里面写不了中文
如果要能写中文就要先做以下操作

a. 打开Idea的设置

a. 编辑器 ---> 文件编码 ---> 将编码改成GBK编码

修改成GBK中文编码就可以了

5. properties文件写法

这里我创建一个名为:test.properties 的文件
#号是注释

# 欢迎来到艺杯羹的阵地
key1 = 艺杯羹
key2 = LY

四. 使用properties文件优化连接

1. 基本操作

  • PropertiesTest:属性测试

  • class:类

  • getClassLoader:获取类加载器

  • getResourceAsStream:获取资源作为流

a. 实例化Properties对象

 Properties prop = new Proerties();

b. 获取读取properties文件的输入流对象

  • PropertiesTest:属性测试

  • class:类

  • getClassLoader:获取类加载器

  • getResourceAsStream:获取资源作为流

InputStream is = PropertiesTest.class.getClassLoader().getResourceAsStream("test.properties");

c. 通过给定的输入流对象读取properties文件并解析

prop.load(is);

d. 获取properties文件中的内容

String value1 = prop.getProperty("key1");
String value2 = prop.getProperty("key2");
System.out.println(value1+" "+value2);


就能够得到key对应的value值

2. 优化获取数据库连接

将连接数据库时所需要的信息存放到properties文件中,可以解决硬编码的问题
所以可以将这些可变的内容,抽取出来放在一个文件中
之后获取数据时,就从文件里获取不就好了
本次就是使用properties文件来优化硬编码问题

可以将以下四处写入properties文件中

a. properties文件内容

#连接Mysql数据库的URL
#jdbc:mysql://连接主机:端口号/数据库名
url=jdbc:mysql://localhost:3306/student
#连接数据库的用户名
username=root
#连接数据库的密码
pwd=3057454077
#数据库驱动名称
driver=com.mysql.jdbc.Driver

b. 获取连接

public class Student {public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {// 实例化Properties对象Properties prop = new Properties();// 获取读取properties文件的字节输入流对象InputStream is = JdbcTest2.class.getClassLoader().getResourceAsStream("jdbc.properties");// 读取properties文件并解析prop.load(is);// 获取连接数据库的urlString url = prop.getProperty("url");// 获取连接数据库的用户名String name = prop.getProperty("username");// 获取连接数据库的密码String pwd = prop.getProperty("pwd");// 获取数据库驱动全名String drivername = prop.getProperty("driver");// 加载并注册驱动,获得DriverManagerClass.forName(drivername);// 通过驱动管理器对象获取连接对象Connection connection = DriverManager.getConnection(url, name, pwd);System.out.println(connection);}
}

五. 封装JDBC工具类

经过刚刚的学习,JDBC一次性的创建连接还是有点麻烦的,那么可以将这个连接的方法封装成一个JDBC工具类,这样之后用就能得心应手了,不会一遍又一遍的去做重复的连接

封装的工具类有两个要求要注意的

工具方法一般定义成静态的
因为直接可以通过类名点方法,这样就更快速,更好
工具类的方法不要抛出异常,直接try - catch

因为增强健壮来统一处理

JdbcUtil工具类

public class JdbcUtils {private static String url;private static String name;private static String pwd;static {try{// 实例化Properties对象Properties prop = new Properties();// 获取读取properties文件的字节输入流对象InputStream is = JdbcTest2.class.getClassLoader().getResourceAsStream("jdbc.properties");// 读取properties文件并解析prop.load(is);// 获取连接数据库的urlurl = prop.getProperty("url");// 获取连接数据库的用户名name = prop.getProperty("username");// 获取连接数据库的密码pwd = prop.getProperty("pwd");// 获取数据库驱动全名String drivername = prop.getProperty("driver");// 加载并注册驱动Class.forName(drivername);}catch(Exception e){e.printStackTrace();}}// 获取数据库连接对象public static Connection getConnection(){Connection connection = null;try {connection = DriverManager.getConnection(url,name,pwd);} catch (SQLException throwables) {throwables.printStackTrace();}return connection;}// 关闭连接对象public static void closeConnection(Connection connection){try {connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}// 提交事务public static void commit(Connection connection){try {connection.commit();} catch (SQLException throwables) {throwables.printStackTrace();}}// 事务回滚public static void rollback(Connection connection){try {connection.rollback();} catch (SQLException throwables) {throwables.printStackTrace();}}// 关闭Statement对象public static void closeStatement(Statement statement){try {statement.close();} catch (SQLException throwables) {throwables.printStackTrace();}}// 关闭ResultSetpublic static void closeResultSet(ResultSet resultSet) {try {resultSet.close();} catch (SQLException throwables) {throwables.printStackTrace();}}// DML操作时关闭资源public static void closeResource(Statement statement,Connection connection){// 先关闭Statement对象// 刚刚写的方法closeStatement(statement);//在关闭Connection对象closeConnection(connection);}// 查询时关闭资源public static void closeResource(ResultSet resultSet,Statement statement,Connection connection){// 先关闭ResultSetcloseResultSet(resultSet);// 再闭Statement对象closeStatement(statement);// 最后关闭Connection对象closeConnection(connection);}
}

为什么要将Properties的操作放在静态块中?
因为Properties文件是一开始就要使用的,那么只有静态块最符合他,当使用了这个类时,最先是执行Properties文件,先获取Properties文件中的值,这样就可以更好的创建连接

这里除了连接数据库的方法,还写出了提交事务、事务回滚、关闭等操作,这些在之后都是会用到的,所以先按这个方法封装一个JDBC工具类

到现在已经讲解完了JDBC获取数据库连接的方法和properties的使用以及JDBC封装的工具类
希望本文能够帮助到你😊

http://www.dtcms.com/wzjs/65322.html

相关文章:

  • 驻马店营销型网站建设优化推广重庆森林讲了什么故事
  • 帮别人做网站犯法吗百度收录查询工具
  • 企业网站轮播图怎么做太原推广团队
  • 装修公司排名 装饰设计广州网站seo推广
  • 网站越来越难做营销策划方案案例
  • 做批发国外什么网站好b2b重庆网站seo多少钱
  • 写男主重生做网站的小说长沙seo搜索
  • 大学生网页设计心得体会百度关键词优化曝光行者seo
  • 真题真做报名网站十八未成年禁用免费app
  • 平台戚里带崇墉友情链接seo
  • 软件系统开发报价单广州seo网站开发
  • 网站互动推广长沙网站推广服务公司
  • 合肥网站设计服移动端关键词优化
  • 哪个cms可以做交友网站四川游戏seo整站优化
  • 模板做图 网站有哪些内容百度搜索什么关键词排名
  • 网站开发简历项目长春网站建设公司哪家好
  • 地方网站运营方案品牌整合推广
  • 广州白云网站建设公司软文素材
  • 北京网站快速备案河南百度推广代理商
  • 多语言外贸网站设计中国新冠疫苗接种率
  • 做网站推广的工作内容app线上推广是什么工作
  • 浙江住房城乡建设厅网站网站怎样关键词排名优化
  • 东莞建站模板后台百度一下你就知道了 官网
  • 微信如何建商城网站如何做网站优化seo
  • 网站开发语音占比如何做一个自己的电商平台
  • 亚洲做性视频网站临沂seo公司稳健火星
  • 网络营销专员岗位职责seo网络推广排名
  • 帝国cms做下载网站郑州抖音推广
  • 济南seo怎么优化安徽seo推广
  • 伊宁市住房与城乡建设局网站宁波网站推广公司报价