📅  最后修改于: 2023-12-03 15:16:02.102000             🧑  作者: Mango
在开发应用程序时,将敏感数据在代码中明文存储是一种非常糟糕的实践,包括用户名和密码。 本文将介绍如何将 MySQL 登录凭据隐藏在 Java 应用程序中,并使用 SQL 查询来访问数据库。
首先,我们需要创建一个配置文件,用于存储 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 登录凭据,接下来是连接到数据库。 我们可以使用 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 查询来访问数据库,并返回结果集。 在以下示例中,我们将从 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 查询检索数据。 这是对优秀软件开发实践的演示。