我是Java编程的新手。我有一个连接到数据库的SQL连接类。
我的指导老师审查了我的代码,他问我“使用属性文件外部化字符串”。我不确定他的意思是什么以及如何去做。
我在网上进行了研究,发现了有关蚀向导和国际化的文章。这让我更加困惑。我不确定是否应该遵循它。
我的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。
答案 0 :(得分:2)
您的指导者意味着您的应用程序应该从属性文件(或类似文件)中获取字符串“ jdbc:sqlite:xxxdbnamexxx.db”以及可能的“ org.sqlite.JDBC”,而不是将其硬连接到代码中。 / p>
这将允许您的应用程序用户连接到其他数据库,而无需修改源代码。他们所需要做的就是修改包含配置属性的属性文件。
现在有争议的是,究竟需要将哪些内容具体化。要考虑的一件事是您的代码可能是特定于SQLite的,这是因为数据库将始终是SQLite,或者因为您依赖于特定于SQLite的SQL或行为。因此,尚不清楚驱动程序类名称("org.sqlite.JDBC"
)是否应为参数。
有很多可能的方法来进行外部化,但是简单的方法是使用java.util.Properties
对象及其加载和保存方法。有关详细信息,请参见javadocs。
这与国际化无关,在国际化中,应用程序从“资源包”中获取用户消息,具体取决于应用程序运行的语言环境。
答案 1 :(得分: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
答案 2 :(得分:-1)
DriverManager.html#getConnection
是重载方法。您正在使用接受单个字符串的the simple version。还存在其他版本,例如one that accepts the URL, the username and the password。
您可以像这样使用它:
// The three arguments are here just for demonstration. Read them from a file,
// pass them as environment variables or as user input.
String url = "jdbc:sqlite:xxxdbnamexxx.db";
String username = "dbuser";
String password = "secret-password";
Connection conn = DriveManager.getConnection(url, username, password);
您应该不将这三个字符串直接放在代码中。将其放入代码可以读取的外部文件中,或将其作为环境变量传递给程序。