Java:我可以使用我的文本文件连接数据库来指定用户,密码和网址吗?

时间:2016-01-19 20:30:05

标签: java mysql

我很好奇使用我的文本文件在JAVA中建立数据库连接。

例如我创建这样的文本文件:

 user root
 passw root
 url http://localhost:3307/.........

是否可以连接到该数据库并获取有关它的信息(创建所有表存储的时间等等)

1 个答案:

答案 0 :(得分:1)

基本上,您可以轻松地建立真正的数据库连接:

  • 将文件加载为行
  • 将每一行拆分为“”
  • 将两个值都放入地图
  • 通过JDBC驱动程序打开连接时,使用map的get(key)方法获取值(您也可以使用(ssl)套接字连接并进行大量字符串解析,但我建议您使用驱动程序)

您在这里面临的实际问题是:您的网址指向在HTTP服务器上运行的phpMyAdmin网站,可能是apache。 该URL不会为您提供实际的数据库。

通常MySQL在端口3306上运行。 从它看起来,你在端口3307上寻址HTTP服务器,它本身解释phpMyAdmin PHP文件。那些命令HTTP服务器连接到MySQL(可能在端口3306上)并读取某些信息。

因此,在Java应用程序中使用您的给定URL不是真正的数据库连接,而只是HTTP请求,要求HTTP服务器提供您可能解析的HTML页面...

因此,您需要指定更多内容以实际解决该问题的最终解决方案。

/ *编辑* / 这是示例代码:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;

public class SimpleTextFileDBConnectionConfig {

    //  MYSQL_DRIVER("com.mysql.jdbc.Driver", "jdbc:mysql://%host%:%port%/%dbname%?verifyServerCertificate=%vsc%&useSSL=%usessl%&requireSSL=%requiressl%"), //

    static public Connection getSimpleDBConnectionByTextFileConfig(final String pFileName) throws ClassNotFoundException, IOException, SQLException {
        final HashMap<String, String> settings = new HashMap<>();
        { // load settings from file; could also drop this in separate method
            final List<String> lines = Files.readAllLines(Paths.get(pFileName));
            for (final String line : lines) {
                if (line == null || line.length() < 1 || line.startsWith("#")) continue; // ignore certain lines
                final String[] setting = line.trim().split(" ", 2);
                final String key = setting[0].trim();
                final String value = setting[1].trim();
                settings.put(key, value);
            }
        }

        // load driver
        final String driverName = settings.get("drivername"); // can be "com.mysql.jdbc.Driver" for default java mysql driver
        Class.forName(driverName);

        // set timeout
        final String timeout = settings.get("timeout");
        if (timeout != null && timeout.length() > 0) DriverManager.setLoginTimeout(Integer.parseInt(timeout));

        // connect
        final String url = settings.get("url"); // can be like "jdbc:mysql://%host%:%port%/%dbname%?verifyServerCertificate=%vsc%&useSSL=%usessl%&requireSSL=%requiressl%"
        return DriverManager.getConnection(url, settings.get("user"), settings.get("password"));
    }

}