java maven项目连接mysql数据库

实现maven项目连接mysql数据库

在maven项目下新建class文件,编辑该文件,部分具体代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public static void main(String[] args) {
               Connection conn = null;

               try
               {

                   String url = "jdbc:mysql://主机名或IP地址:端口号/数据库名称(可选)";
                   String sql_user = "数据库连接用户名";
                   String sql_pwd = "数据库连接密码";
                   Class.forName ("com.mysql.jdbc.Driver");
                   conn = DriverManager.getConnection (url,sql_user,sql_pwd);
                   System.out.println ("Database connection established");
               }
               catch (Exception e)
               {
                   e.printStackTrace();

               }
               finally
               {
                   if (conn != null)
                   {
                       try
                       {
                           conn.close ();
                           System.out.println ("Database connection terminated");
                       }
                       catch (Exception e) { /* ignore close errors */ }
                   }
               }
           }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
选中pom.xml文件右键选择【run as】>【maven clean】
在【console】里面显示【build success】则说明执行【maven clean】成功


接着继续选中pom.xml文件右键选择【run as】>【maven test】

在【console】里面显示【build success】则说明执行【maven test】成功


选中新建的class文件,右键选择【run as】>【java application】
运行后出现了错误“java.lang.ClassNotFoundException: com.mysql.jdbc.Driver”
原因:
该问题产生是因为缺少jar的导入
解决方案:
查找错误“java.lang.ClassNotFoundException: com.mysql.jdbc.Driver”的步骤一般分为4步:

查看pom.xml文件中是否导入了 “mysql-connector-java” 这个jar包,即引用相关依赖代码
右击项目,选择【run as】>【maven test】或【maven install】下载可能缺失的jar包
或将自行下载的jar包复制到项目中,并且选中该jar包右键【build path】>【add to build path】
查看数据库连接信息是否有细微的小错误
故首先对pom.xml文件进行查看,发现其中确实缺少相关的依赖代码,故在maven网上仓库中查找“mysql”,选择MySQL Connector/J>选择最新版本

将其中的依赖代码复制到pom.xml文件中,具体代码如下:
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>
1
2
3
4
5
6
保存全部后,再次运行【maven clean】和【maven test】

再次对新建的class文件执行【run as】>【java application】
再次出现了报错信息,信息内容是“Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.”
原因:
该错误是由于数据库驱动com.mysql.jdbc.Driver已经被弃用了,应当使用新的驱动com.mysql.cj.jdbc.Driver
解决方案:
将新建class文件中的Class.forName ("com.mysql.jdbc.Driver");修改为Class.forName ("com.mysql.cj.jdbc.Driver");后保存全部
再次运行【run as】>【java application】

由上图可知,已运行正常且不再有报错了,就此结束在maven项目中连接数据库的操作。

封装类:
可以单独将数据库连接写成一个单独的类,方便以后的调用,部分具体代码如下:

import org.testng.annotations.Test;
import org.testng.Assert;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class dbConnet {    
    private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
    private String database = "数据库名称";
    private String URL = "jdbc:mysql://主机名或IP地址:端口号/数据库名称(可选)" + database 
             + "?characterEncoding=utf8&useSSL=true"; 
    private static final String USER = "数据库连接用户名"; 
    private static final String PASSWORD = "数据库连接密码"; 
     
     @Test
     public Connection dbCon()
     //public static void dbCon() //用于验证是否执行
     { 
         
         Connection con = null; 
         try { 
             Class.forName(DRIVER);//加载驱动程序   
             con = DriverManager.getConnection(URL, USER, PASSWORD); 
             //System.out.println("已成功连接数据库!");    //用于验证是否执行
             } catch (ClassNotFoundException e) { 
                 JOptionPane.showMessageDialog(null, "加载驱动器失败", "数据库连接", JOptionPane.ERROR_MESSAGE); 
                 } catch (SQLException e) { 
                     JOptionPane.showMessageDialog(null, "注册驱动器失败", "数据库连接", JOptionPane.ERROR_MESSAGE); 
                     } 
         //System.out.println("已执行该程序!");  //用于验证是否执行
         return con; 
         }
    }     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
对上述代码进行解释,其中:

private是指“私有的”,是权限修饰符,用于属性和方法(不用于类,否则其他任何外部对象都无法访问到该类)。
●变量一般使用private进行声明,若外部对象需要访问使用private声明的属性则需要依靠该类中的set(用于赋值)和get(用于获取)方法。

static是指“静态”,是属于类的,而不属于任何对象。
●被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问,即不需要通过创建实例对象或是使用this才能对其进行访问;
●在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用,但是在非静态成员方法中是可以访问静态成员方法/变量的,如果说想在不创建对象的情况下调用某个方法,就可以将这个方法设置为static;
●静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化,其初始化顺序按照定义的顺序进行初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响;
●Java中的static与C/C++中的static不同,Java中的static关键字不会影响到变量或者方法的作用域。在Java中能够影响到访问权限的只有private、public、protected(包括包访问权限)这几个关键字;
●静态变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要访问权限足够)。

final是指“最后”,是个修饰符,它可以用来修饰类,类的成员,以及局部变量。
●如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承,但可以继承其他类。因此一个类不能既被声明为 abstract的,又被声明为final的;
●将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

注意:若方法有返回值,则在执行maven test时将被忽略。
————————————————
版权声明:本文为CSDN博主「竹jing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhujing16/article/details/93627645

package com.hexiang.utils.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import org.apache.log4j.Logger; public class DBConnection { /** * 获得与数据库连接 * * @param path * @return Connection */ public static Connection getConn(String classDriver, String url, String user, String pwd) { try { Class.forName(classDriver); return DriverManager.getConnection(url, user, pwd); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(DataSource dataSource) { try { return dataSource.getConnection(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(String jndiName) { try { Context ctx; ctx = new InitialContext(); DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/" + jndiName); return dataSource.getConnection(); } catch (NamingException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(Properties properties) { try { String driver = properties.getProperty("jdbc.driverClassName"); String url = properties.getProperty("jdbc.url"); String user = properties.getProperty("jdbc.username"); String password = properties.getProperty("jdbc.password"); Class.forName(driver); return DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } /** * oracle连接 * * @param path * @return Connection */ public static Connection getOracleConn(String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值