0

我在 ECLIPSE 中编写了一些代码。如您所见,用户名、密码、数据库 URL、SQL 查询被硬编码到我的程序中。每次更改密码、数据库用户名或修改查询时,我都不想更改代码并重新编译它。出于这个原因,我想将这些“参数”放在一个文件中(文本、XML、json ???)。我希望能够轻松更改参数。所以我该怎么做 ?我应该使用什么样的文件?我想避免使用 XML、json,因为您需要对两者都很了解。当代码变大时,XML 和 JSON 可能会很困难。

import java.sql.*;

public class JDBCDemo {


static String query = 
        "SELECT customerno, name " +
        "FROM customers;";


public static void main(String[]args)
{
    String username = "cowboy";
    String password = "123456";
    try
    {
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/business", username, password);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(query);
    }catch(SQLException ex){System.out.println("Exception! " + ex);}

}

}
4

7 回答 7

4

您可以使用 属性 并从 .properties 文件中读取值。

于 2012-07-24T15:39:59.750 回答
1

也许有帮助。这是此类配置文件的一个示例。

于 2012-07-24T15:42:20.463 回答
0
InputStream inputStream = null;
Properties properties = new Properties();
try {
    inputStream = JDBCDemo.class.getClassLoader().getResourceAsStream("jdbc.properties");
    properties.load(inputStream);
}
finally {
    try { 
        if (inputStream != null) {
             inputStream.close();
        }
    }
    catch (IOException e) {
        ;//ignore
    }
}

String username = properties.get("username");
于 2012-07-24T15:42:47.657 回答
0

XML 和 JSON 是结构化格式,因此需要对其进行解析

文本文件将是最容易实现的,但由于它是非结构化的,最终用户将需要知道您的程序可以理解的内部格式。例如,额外的空间可能会破坏您的程序。

于 2012-07-24T15:43:09.327 回答
0

曾经想过使用 spring 注入,您可以创建一个包含所有硬编码变量的配置文件,这些变量可以通过 getter 和 setter 放入您的代码中。那么将来如果这些变量中的任何一个需要更改,您只需更改 1 个文件 http://www.springsource.org/javaconfig/

于 2012-07-24T15:43:46.643 回答
0

通常,uer-id 和密码(而不是需要从 JAR/WAR 外部配置的任何资源)作为键值对存储在属性文件中。然后,您可以使用 ResourceBundle 类访问它们:http: //docs.oracle.com/javase/1.4.2/docs/api/java/util/ResourceBundle.html

于 2012-07-24T16:06:39.380 回答
0

对于sql查询,您可以使用数据库functionprocedure返回某种类似于SYS_REFCURSORin的游标并从前端Oracle调用functionor 。procedure通过这样做,您可以避免在 java 代码中对 sql 查询进行硬编码。

问候

于 2012-07-25T10:48:31.163 回答