使用jdbc连接mysql数据库

  • 时间:
  • 浏览:684
  • 来源:成都艾邦软件开发

一、下载mysql对应的JDBC驱动

jar包网址/artifact/mysql/mysql-connector-java
选择一个下载次数比较多的具体看自己需求。

二、编译器

这里使用的编译器是idea

三、新建一个java项目

使用idea创建Java项目的步骤省略详情请参考怎么使用idea创建Java项目。
在项目中创建一个lib文件夹将下载将下载好的JDBC驱动添加到lib文件夹中

四、让添加的JDBC驱动包在项目中生效

选中菜单栏中的file——Project Structure——Libraries


然后在弹出的对话框中找到自己新建的项目的位置找到项目中的lib文件夹选中mysql的JDBC驱动然后点击ok最后后点击Apply就可以了。注意这里是我的项目中的lib文件夹中的JDBC驱动

操作完成后你会发现项目中lib文件夹中的jar包前面会多一个三角形的图标。

  • 这个是添加了jar包没有在项目中生效jar包的截图

  • 这个是添加了jar包并在项目中生效了jar包的截图

    这个就表示该jar包已经在项目中生效了也就是可以在项目中进行使用了。

五、创建连接数据库工具类

工具类里面只有连接数据库的操作没有操作数据库的操作使用jdbc操作数据库后面会具体讲解。

1、在src下面新建一个类

package com.yunji.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;/** * program: jdbc-mysql * description: 工具类 * author: 老铁 * create: 2019-09-19 22:59 **/public class DBUtil {/*** 数据库驱动字符串*/private static String driver  com.mysql.jdbc.Driver;/*** 连接URL字符串* //jdbc:mysql://链接地址:端口号/数据库名?serverTimezoneGMT新版的驱动需要加这个时区不然会报时区错误* 127.0.0.1可以替换为localhost,代表本地主机* characterEncodingutf-8用户解决乱码问题** private static String url  jdbc:mysql://127.0.0.1:3306/laotie?characterEncodingutf-8serverTimezoneGMT;*/private static String url  jdbc:mysql://127.0.0.1:3306/laotie?characterEncodingutf-8serverTimezoneGMT;/*** 数据库用户名*/private static String user  root;/*** 数据库密码(自己数据库的密码)*/private static String pass  ;/*** 连接数据库的方法*/public static Connection getConnection() {Connection conn  null;try {// 加载驱动Class.forName(driver);// 建立数据库连接conn  DriverManager.getConnection(url, user, pass);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {//操作完后要关闭连接//因为数据库的连接是有限的,连接太多程序就变慢,对数据库也有压力。close(null,null,conn);}// 返回连接对象return conn;}/*** 关闭数据库连接的方法** param rs* param ps* param con*/public static void close(ResultSet rs, PreparedStatement ps, Connection con) {try {//必须是这个顺序 rs---ps--conif (rs ! null) {rs.close();// 关闭ResultSet资源}if (ps ! null) {ps.close();// 关闭PreparedStatement资源}if (con ! null) {con.close();// 关闭Connection资源}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}}

2、创建一个程序入口(main)来测试

package com.yunji.test;import com.yunji.util.DBUtil;import java.sql.Connection;/** * program: jdbc-mysql * description: 测试类 * author: 老铁 * create: 2019-09-19 23:05 **/public class TestJDBC {public static void main(String[] args) {//获取数据库连接Connection connection  DBUtil.getConnection();//输出连接对象System.out.println(connection);}}

3、运行结果

这个表示连接mysql数据库成功了。

六、连接数据库常见错误

1、jdbc驱动错误

解决方法

  • 检查项目中是否有jdbc的驱动jar包
  • 检查 数据库驱动字符串是否是正确的。
    正确的数据库驱动字符串
    老版本com.msql.jdbc.Driver
    新版版本com.mysql.cj.jdbc.Driver

2、连接出错

解决方法

  • 检查数据连接的用户名和密码是否正确

这里只列举了两种常见错误还有一些bug大家要学会自己解决。

1.导入驱动jar包

JDBC本质上是sun公司提供的一套能操作所有关系型数据库的接口要想操作不同的数据库如Oracle、DB2MySQL等等就必须由不同的数据库厂商来定义实现类来实现接口而这里的实现类就是驱动jar包。

这里给大家提供了两个驱动jar包一个是MySQL5.1的jar包另一个时MySQL8.0的jar包看自己下载的MySQL是什么版本。

MySQL5.1版本对应的驱动jar包链接链接/s/16VdB5mTzTMRdJQok1or1Gw
提取码00wq

MySQL8.0版本对应的驱动jar包链接/s/1jF2wFn5gfIER_XN0uFDFSQ
提取码25n5

2.在项目目录下新建一个文件夹命名为lib


建议命名为lib

3.将下载好的驱动jar包解压会看到以下驱动jar包将其复制以mysql8.0的jar包为例

4.粘贴到刚刚建好的lib目录下

注意要加到libraries中jar包右键–add as library这样jar包就加载进来了


点ok

接下来编写一个测试类来测试一下是否连接得上数据库

重点
加载驱动时注意
1mysql8.0的需要加cj
例如
Class.forName(“com.mysql.cj.jdbc.Driver”);
2mysql5.1的不需要
例如
Class.forName(“com.mysql.jdbc.Driver”);

获取数据库连接对象时注意
1MySQL8.0需要加时区
例如
Connection connection DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名?serverTimezoneUTC”, “root”, “root”);

2)MySQL5.1之后不用
DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名”, “root”, “root”);

import java.sql.*;public class JDBCDemo {public static void main(String[] args) {//1.注册驱动try {Class.forName(com.mysql.cj.jdbc.Driver);//获取连接数据库对象Connection connection  DriverManager.getConnection(jdbc:mysql://localhost:3306/数据库名?serverTimezoneUTC, root, root);//定义sql语句,这里为修改数据String sqlupdate 表名 set 列名xx where 条件字段;//执行sql对象PreparedStatement stat  connection.prepareStatement(sql);//这里的count是返回执行成功的语句数量也可以理解为影响行数int count  stat.executeUpdate();System.out.println(count);//因为我只操作一个数据影响行数为1所以返回结果是1} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}//在finally语句块中释放资源finally {if (stat!null){try {stat.close();} catch (SQLException e) {e.printStackTrace();}}if (connection!null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}}}

如果出现以下异常说明MySQL版本和驱动jar包不对应
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

总结

1 导入驱动jar包mysql-connector-java-5.1.37-bin.jar或者mysql-connector-java-8.0.18.jar
1.1复制mysql-connector-java-5.1.37-bin.jar或者mysql-connector-java-8.0.18.jar
到项目的(libs目录下)可不建目录
1.2右键–add as library
2 注册驱动:Class.forName(“com.mysql.jdbc.Driver”);(mysql8.0需要在mysql.后面加cj)
3 获取数据库对象 ConnectionMySQL8.0需要加时区?serverTimezoneUTC)
4 定义sql
5 获取执行sql语句的对象 Statement
6 执行sql接受返回结果
7 处理结果
8 释放资源:close()

希望此文章对您有所帮助