0

我是 Java 编程新手。我有一个连接到我的数据库的 SQL 连接类。

我的导师审查了我的代码,他让我“使用属性文件外部化字符串”。我不确定他的意思是什么以及如何去做。

我在网上对此进行了研究,发现了有关 eclipse 向导和国际化的文章。这让我更加困惑。我不确定我是否应该遵循它。

我的 SQL Connection 类看起来像这样。

public class SQLConnection {
    Connection conn = null;
    public static Connection dbConnector() {
        try {
            Class.forName("org.sqlite.JDBC");
            Connection conn = DriverManager.getConnection("jdbc:sqlite:xxxdbnamexxx.db");

            return conn;
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
            return null;
        }
    }
}

我希望连接类能够像在字符串外部化后通常那样返回连接。

如果有帮助,我会使用 Eclipse IDE。

4

2 回答 2

3

您的导师意味着您的应用程序应该从属性文件(或类似文件)中获取字符串“jdbc:sqlite:xxxdbnamexxx.db”和可能的“org.sqlite.JDBC”,而不是将它们硬连接到您的代码中。

这将允许您的应用程序的用户在不修改源代码的情况下连接到不同的数据库。他们需要做的就是修改包含配置属性的属性文件。

现在,究竟什么需要外化是有争议的。需要考虑的一件事是,您的代码可能是特定于 SQLite 的,因为数据库将始终是 SQLite,或者因为您依赖于特定于 SQLite 的 SQL 或行为。所以不清楚驱动程序类名 ( "org.sqlite.JDBC") 是否应该是一个参数。

有很多方法可以进行外部化,但最简单的方法是使用java.util.Properties对象及其加载和保存方法;有关详细信息,请参阅javadocs


这与国际化无关,在国际化中,应用程序从“资源包”中获取用户消息,具体取决于应用程序运行的区域设置。

于 2019-07-06T07:59:31.330 回答
0

我不确定是否有一种简单的方法可以做到这一点。但是你可以这样做:

//Properties is a class:
Properties prop=new Properties();
//read file
InputStream in = 
BaseDao.class.getClassLoader().getResourceAsStream("jdbc.properties");
prop.load(in);
//load file
String userName = prop.getProperty("userName");
String pwd = prop.getProperty("pwd");
String url = prop.getProperty("url");
String driver = prop.getProperty("driver");
// database driver
Class.forName(driver);
// get connection
Connection conn = DriverManager.getConnection(url, userName, pwd);

并创建一个名为“jdbc.properties”的新文件,放置在资源目录的根目录中:

userName=root
pwd=password
// sqlite driver name
driver=org.sqlite.JDBC
// address of your database 
url=jdbc:sqlite:personName.db
于 2019-07-06T10:16:33.240 回答