📜  java 隐藏 mysql 登录凭据 - SQL (1)

📅  最后修改于: 2023-12-03 15:16:02.102000             🧑  作者: Mango

Java 隐藏 MySQL 登录凭据 - SQL

在开发应用程序时,将敏感数据在代码中明文存储是一种非常糟糕的实践,包括用户名和密码。 本文将介绍如何将 MySQL 登录凭据隐藏在 Java 应用程序中,并使用 SQL 查询来访问数据库。

存储 MySQL 登录凭据

首先,我们需要创建一个配置文件,用于存储 MySQL 登录凭据。 我们可以使用 Java 的 Properties 类将用户名和密码存储为键值对。 我们还可以将数据库 URL 存储在配置文件中。

创建一个名为 config.properties 的文件,并将以下内容添加到其中:

db.url=jdbc:mysql://localhost:3306/mydatabase
db.username=myuser
db.password=mypassword

在 Java 中,我们可以使用以下代码来加载配置文件:

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class DBConfig {
    private static final String CONFIG_FILE = "config.properties";

    public static Properties getConfig() {
        Properties config = new Properties();
        try {
            config.load(new FileInputStream(CONFIG_FILE));
        } catch (IOException e) {
            throw new RuntimeException("Failed to load config file: " + CONFIG_FILE, e);
        }
        return config;
    }
}

连接到 MySQL 数据库

现在我们已经可以访问配置文件中的 MySQL 登录凭据,接下来是连接到数据库。 我们可以使用 JDBC 驱动程序创建数据源并从中获取连接。 配置数据源可以在应用程序启动时完成。

import javax.sql.DataSource;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

public class DBUtil {
    private static final String DB_URL = DBConfig.getConfig().getProperty("db.url");
    private static final String DB_USERNAME = DBConfig.getConfig().getProperty("db.username");
    private static final String DB_PASSWORD = DBConfig.getConfig().getProperty("db.password");

    private static DataSource dataSource;

    static {
        MysqlDataSource mysqlDataSource = new MysqlDataSource();
        mysqlDataSource.setURL(DB_URL);
        mysqlDataSource.setUser(DB_USERNAME);
        mysqlDataSource.setPassword(DB_PASSWORD);
        dataSource = mysqlDataSource;
    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }
}

现在,我们可以通过调用 DBUtil.getConnection() 方法来获取 MySQL 数据库的连接。

使用 SQL 查询访问数据库

最后,我们将介绍如何使用 SQL 查询来访问数据库,并返回结果集。 在以下示例中,我们将从 my_table 表中检索所有行。

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {
    public static void main(String[] args) {
        try (Connection conn = DBUtil.getConnection();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM my_table")) {
            while (rs.next()) {
                // process each row returned by the query
                // e.g. rs.getInt("id"), rs.getString("name"), etc.
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

结论

在本文中,我们介绍了如何在 Java 应用程序中将 MySQL 登录凭据隐藏,并使用 SQL 查询访问数据库。 我们使用了 Java 的 Properties 类加载配置文件,使用 JDBC 驱动程序创建数据源并连接到 MySQL 数据库,并使用 SQL 查询检索数据。 这是对优秀软件开发实践的演示。