IDEA用Maven连接MySQL的jdbc驱动,并操作数据库

Posted 打点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA用Maven连接MySQL的jdbc驱动,并操作数据库相关的知识,希望对你有一定的参考价值。

1、在IDEA里创建Maven项目

1.1、点击Create New Project

 
1.2、选择Maven,JDK这里用的是1.8,点击Next

 1.3、填入“组织名”、“项目名”,版本是默认的,点击Next
 
1.4、选择创建路径,点击Finsh
 
1.5、这是创建完成的界面
 

2、用Maven连接mysql的JDBC驱动

2.1、打开src下的pom.xml文件, 在里面添加Mysql的jdbc包的引用,代码如下

1 <dependencies>
2     <dependency>
3         <groupId>mysql</groupId>
4         <artifactId>mysql-connector-java</artifactId>
5         <version>8.0.18</version>
6     </dependency>
7 </dependencies>

2.2、添加完成后,IDEA右下角会出现下图提示,点击提示中的Import Changes,Maven就会开始下载资源

 

2.3、下载时页面左下角出现正在下载的提示

 

2.4、下载完成变成绿勾

 

3、连接数据库第一种方式:直接注册驱动,向数据库插入数据(不推荐使用)

3.1、在src——main——java目录下,新建一个LinkDatabaseInsert的类

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.PreparedStatement;
 4 import java.sql.SQLException;
 5 
 6 public class LinkDatabaseInsert {
 7     public static void main(String[] args) throws ClassNotFoundException, SQLException {
 8         //1.注册数据库的驱动
 9         Class.forName("com.mysql.jdbc.Driver");
10         //2.获取数据库连接(里面内容依次是:"jdbc:mysql://主机名:端口号/数据库名","用户名","登录密码")
11         Connection connection = DriverManager.getConnection("jdbc:mysql://rm-uf6lgkv4fd9776rxego.mysql.rds.aliyuncs.com:3306/study","root","whmilyY123!");
12         //3.需要执行的sql语句(?是占位符,代表一个参数)
13         String sql = "insert into stu(id,name,age) values(?,?,?)";
14         //4.获取预处理对象,并依次给参数赋值
15         PreparedStatement statement = connection.prepareCall(sql);
16         statement.setInt(1,12); //数据库字段类型是int,就是setInt;1代表第一个参数
17         statement.setString(2,"小明");    //数据库字段类型是String,就是setString;2代表第二个参数
18         statement.setInt(3,16); //数据库字段类型是int,就是setInt;3代表第三个参数
19         //5.执行sql语句(执行了几条记录,就返回几)
20         int i = statement.executeUpdate();
21         System.out.println(i);
22         //6.关闭jdbc连接
23         statement.close();
24         connection.close();
25     }
26 }

3.2、运行程序,返回1,说明插入成功

 

4、连接数据库第二种方式——新建数据库配置文件,获取配置文件信息后,再注册数据库驱动

4.1、利用反射获取新建的数据库配置文件db.properties里的信息

4.1.1、在src——main——resources目录下,新建db.properties文件

1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://rm-uf6lg6rxego.mysql.rds.aliyuncs.com:3306/study
3 user=root
4 password=wY123!

 4.1.2、新建util包,然后在里面创建JdbcUtil类,利用反射获取db.properties文件信息,最后返回数据库连接

 1 package util;
 2 
 3 import java.io.InputStream;
 4 import java.sql.Connection;
 5 import java.sql.DriverManager;
 6 import java.util.Properties;
 7 
 8 //获取到db.properties文件中的数据库信息
 9 public class JdbcUtil {
10     //私有变量
11     private static String driver;
12     private static String url;
13     private static String user;
14     private static String password;
15 
16     //静态块
17     static{
18         try{
19             //1.新建属性集对象
20             Properties properties = new Properties();
21             //2通过反射,新建字符输入流,读取db.properties文件
22             InputStream input = JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");
23             //3.将输入流中读取到的属性,加载到properties属性集对象中
24             properties.load(input);
25             //4.根据键,获取properties中对应的值
26             driver = properties.getProperty("driver");
27             url = properties.getProperty("url");
28             user = properties.getProperty("user");
29             password = properties.getProperty("password");
30         }catch(Exception e){
31             e.printStackTrace();
32         }
33     }
34 
35     //返回数据库连接
36     public static Connection getConnection(){
37         try{
38             //注册数据库的驱动
39             Class.forName(driver);
40             //获取数据库连接(里面内容依次是:主机名和端口、用户名、密码)
41             Connection connection = DriverManager.getConnection(url,user,password);
42             //返回数据库连接
43             return connection;
44         }catch (Exception e){
45             e.printStackTrace();
46         }
47         return null;
48     }
49 }

 4.1.3、在java目录下创建LinkMysql类,调用JdbcUtil类返回的数据库连接操作数据库

 1 import util.JdbcUtil;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.SQLException;
 6 
 7 public class LinkMysql {
 8     public static void main(String[] args) throws ClassNotFoundException, SQLException {
 9         //获取数据库连接
10         Connection connection = JdbcUtil.getConnection();
11         //需要执行的sql语句
12         String sql = "insert into stu(id,name,age) values(?,?,?)";
13         //获取预处理对象,并给参数赋值
14         PreparedStatement statement = connection.prepareCall(sql);
15         statement.setInt(1,14);
16         statement.setString(2,"李四");
17         statement.setInt(3,16);
18         //执行sql语句(插入了几条记录,就返回几)
19         int i = statement.executeUpdate();  //executeUpdate:执行并更新
20         System.out.println(i);
21         //关闭jdbc连接
22         statement.close();
23         connection.close();
24     }
25 }

 

4.2、通过ResourceBundle类获取新建的数据库配置文件db.properties里的信息

4.2.1、在util包里面创建创建JdbcUtil2类,ResourceBundle类获取db.properties文件信息,最后返回数据库连接

 1 package util;
 2 
 3 import java.sql.*;
 4 import java.util.ResourceBundle;
 5 
 6 public class JdbcUtil2 {
 7     //私有变量
 8     private static String driver;
 9     private static String url;
10     private static String user;
11     private static String password;
12 
13     //静态块
14     static{
15         try{
16             //2.3通过ResourceBundle类拿到数据库连接信息
17             ResourceBundle resourceBundle = ResourceBundle.getBundle("db");
18             driver = resourceBundle.getString("driver");
19             url = resourceBundle.getString("url");
20             user = resourceBundle.getString("user");
21             password = resourceBundle.getString("password");
22         }catch(Exception e){
23             e.printStackTrace();
24         }
25     }
26 
27     //返回数据库连接
28     public static Connection getConnection(){
29         try{
30             //注册数据库的驱动
31             Class.forName(driver);
32             //获取数据库连接(里面内容依次是:主机名和端口、用户名、密码)
33             Connection connection = DriverManager.getConnection(url,user,password);
34             //返回数据库连接
35             return connection;
36         }catch (Exception e){
37             e.printStackTrace();
38         }
39         return null;
40     }
41 
42     //关闭结果集
43     public static void closeResultSet(ResultSet resultSet) {
44         if (resultSet != null) {
45             try {
46                 resultSet.close();
47             } catch (SQLException e) {
48                 e.printStackTrace();
49             }
50         }
51     }
52 
53     //关闭预处理对象
54     public static void closeStatement(Statement statement) {
55         if (statement != null) {
56             try {
57                 statement.close();
58             } catch (SQLException e) {
59                 e.printStackTrace();
60             }
61         }
62     }
63 
64     //关闭数据库连接
65     public static void closeConnection(Connection connection){
66         if(connection != null){
67             try {
68                 connection.close();
69             } catch (SQLException e) {
70                 e.printStackTrace();
71             }
72         }
73     }
74 
75     //一次性关闭上面三个
76     public static void closeResource(ResultSet resultSet,Statement statement,Connection connection){
77         closeResultSet(resultSet);
78         closeStatement(statement);
79         closeConnection(connection);
80     }
81 }

 

4.2.2、在java目录下创建LinkMysql2类,调用JdbcUtil2类返回的数据库连接操作数据库

 1 import util.JdbcUtil2;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.SQLException;
 6 
 7 public class LinkMysql2 {
 8     public static void main(String[] args) throws ClassNotFoundException, SQLException {
 9         //获取数据库连接
10         Connection connection = JdbcUtil2.getConnection();
11         //需要执行的sql语句
12         String sql = "insert into stu(id,name,age) values(?,?,?)";
13         //获取预处理对象,并给参数赋值
14         PreparedStatement statement = connection.prepareCall(sql);
15         statement.setInt(1,19);
16         statement.setString(2,"王五");
17         statement.setInt(3,16);
18         //执行sql语句(执行了几条记录,就返回几)
19         int i = statement.executeUpdate();  //executeUpdate:执行并更新
20         System.out.println(i);
21         //关闭jdbc连接
22         JdbcUtil2.closeResource(null,statement,connection);
23     }
24 }
25 import util.JdbcUtil2;
26 
27 import java.sql.Connection;
28 import java.sql.PreparedStatement;
29 import java.sql.SQLException;
30 
31 public class LinkMysql2 {
32     public static void main(String[] args) throws ClassNotFoundException, SQLException {
33         //获取数据库连接
34         Connection connection = JdbcUtil2.getConnection();
35         //需要执行的sql语句
36         String sql = "insert into stu(id,name,age) values(?,?,?)";
37         //获取预处理对象,并给参数赋值
38         PreparedStatement statement = connection.prepareCall(sql);
39         statement.setInt(1,19);
40         statement.setString(2,"王五");
41         statement.setInt(3,16);
42         //执行sql语句(执行了几条记录,就返回几)
43         int i = statement.executeUpdate();  //executeUpdate:执行并更新
44         System.out.println(i);
45         //关闭jdbc连接
46         JdbcUtil2.closeResource(null,statement,connection);
47     }
48 }
 

5、连接数据库的第三种方式:新建数据库配置文件,获取配置文件信息后,再通过DButils工具包连接数据库

5.1、打开src下的pom.xml文件, 在里面添加DButils的引用,代码如下
1 <dependency>
2     <groupId>commons-dbutils</groupId>
3     <artifactId>commons-dbutils</artifactId>
4     <version>1.5</version>
5 </dependency>

 5.2、创建DbutilsInsert类,往数据库内插入数据,代码如下
 1 import org.apache.commons.dbutils.QueryRunner;
 2 import util.JdbcUtil2;
 3 
 4 import java.sql.Connection;
 5 import java.sql.SQLException;
 6 
 7 public class DbutilsInsert {
 8     public static void main(String[] args) throws SQLException {
 9         //创建dbUtils里面的QueryRunner对象
10         QueryRunner queryRunner = new QueryRunner();
11         //sql语句
12         String sql = "insert into stu(id,name,age) values(?,?,?)";
13         //存参数值的数组
14         Object[] objects = {20,"小红",11};
15         //获取数据库连接
16         Connection connection = JdbcUtil2.getConnection();
17         //执行sql语句,并返回影响的行数
18         int i = queryRunner.update(connection,sql,objects);
19         System.out.println(i);
20         //关闭数据库连接
21         connection.close();
22     }
23 }
 5.3、创建DbutiUpdate类,更新数据库内数据,代码如下
 1 import org.apache.commons.dbutils.QueryRunner;
 2 import util.JdbcUtil2;
 3 
 4 import java.sql.Connection;
 5 import java.sql.SQLException;
 6 
 7 public class DbutilsUpdate {
 8     public static void main(String[] args) throws SQLException {
 9         //创建dbUtils里面的QueryRunner对象
10         QueryRunner queryRunner = new QueryRunner();
11         //sql语句
12         String sql = "update stu set name=? where id=?";
13         //存参数值的数组
14         Object[] objects = {"红红",21};
15         //获取数据库连接
16         Connection connection = JdbcUtil2.getConnection();
17         //执行sql语句,并返回影响的行数
18         int i = queryRunner.update(connection,sql,objects);
19         System.out.println(i);
20         //关闭数据库连接
21         connection.close();
22     }
23 }

 5.4、创建DbutiDelete类,删除数据库内数据,代码如下
 1 import org.apache.commons.dbutils.QueryRunner;
 2 import util.JdbcUtil2;
 3 
 4 import java.sql.Connection;
 5 import java.sql.SQLException;
 6 
 7 public class DbutilsDelete {
 8     public static void main(String[] args) throws SQLException {
 9         //创建dbUtils里面的QueryRunner对象
10         QueryRunner queryRunner = new QueryRunner();
11         //sql语句
12         String sql = "delete from stu where id=?";
13         //存参数值的数组
14         Object[] objects = {11};
15         //获取数据库连接
16         Connection connection = JdbcUtil2.getConnection();
17         //执行sql语句,并返回影响的行数
18         int i = queryRunner.update(connection,sql,objects);
19         System.out.println(i);
20         //关闭数据库连接
21         connection.close();
22     }
23 }

 5.5、创建UtilsSelectArrayHandler类,查询数据(ArrayHandler()只会返回第一条记录