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

通常、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

XMLとJSONは構造化された形式であるため、解析する必要があります。

テキストファイルは実装が最も簡単ですが、構造化されていないため、エンドユーザーはプログラムが理解できる内部形式を知る必要があります。たとえば、余分なスペースがプログラムを壊す可能性があります。

于 2012-07-24T15:43:09.327 に答える
0

スプリングインジェクションを使用して、ゲッターとセッターを介してコードに入れることができるすべてのハードコードされた変数を含む1つの構成ファイルを作成することを考えたことはありません。その後、将来、これらの変数のいずれかを変更する必要がある場合は、1つのファイルhttp://www.springsource.org/javaconfig/のみを変更します 。

于 2012-07-24T15:43:46.643 に答える
0

sqlクエリの場合、データベースを使用するかfunction、in にprocedure似たある種のカーソルを返し、フロントエンドからまたはを呼び出すことができます。これを行うことで、Java コードでの SQL クエリのハード コーディングを回避できます。SYS_REFCURSOROraclefunctionprocedure

よろしく

于 2012-07-25T10:48:31.163 に答える
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 に答える