私は、eclipse、eclipseLink、Java永続性API(JPA)と同じ構造(同じテーブル)を持つ2つのデータベース(MYSQLとSQLServer)を使用してJavaプロジェクトで作業しています。時には、 "if"などの条件文を適用するために使用しているデータベースをチェックする必要があります。質問は次のとおりです: MySQLまたはSQLServerデータベースに接続してその情報をパラメータで使用しているかどうかを確認するにはどうすればよいですか?接続されているデータベースの確認 - Java永続性API
1
A
答えて
0
私はpersistence.xmlの設定ファイルにタグ財産と属性名=「eclipselink.target-データベース」を読んで問題を解決しました。私はこれらの輸入品使用:
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
をそして、これは私がプロパティを読み取るために使用する関数です:Stringに、このメソッドの戻り値を割り当てるために、あなたがしなければならない別のクラスで
public String DatabaseIdentifier()
{
String dbIdentifier=null ;
try {
//Creates a virtual file where is allowed for default the persistence.xml configurarion file
File path= new File("src\\META-INF");
//Using the xml libraries prepare the document to be read.
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new File(path+"\\persistence.xml"));
doc.getDocumentElement().normalize();
//Gets the list of properties contained in the persistence.xml file
NodeList listProperties= doc.getElementsByTagName("property");
//We searching in the list of properties the attribute with the name
//eclipselink.target-database and there we get the database that
//is in use.
for (int i = 0; i < listProperties.getLength(); i ++) {
Node team = listProperties.item(i);
if (team.getNodeType() == Node.ELEMENT_NODE)
{
Element element = (Element) team;
if (element.getAttribute("name").contains("eclipselink.target-database"))
{
dbIdentifier=element.getAttribute("value").toString();
System.out.println(element.getAttribute("value"));
}
}
}
} catch (Exception e)
{e.printStackTrace();}
return dbIdentifier;
}
。それが答えです。今では、 "if"のような条件文でこの情報を使用できます。
0
boolean値connectedToDatabaseを作成し、falseに初期化します。 接続を確立するtryとcatchブロックを作成します。 try内でconnectedToDatabaseをtrueに初期化します。ブール値に接続しようとしたときに例外がキャッチされた場合はfalseのままです。
private boolean connectedToDatabase = false;
try
{
connection = DriverManager.getConnection(urlOfDatabase);
connectedToDatabase = true;
}catch(SQLException sqlException){
sqlException.printStackTrace();}
次に、connectedToDatabaseがfalseの場合に例外をスローするif文を作成できます。メソッドがIllegalStateExceptionをスローすることを確認してください。
if(!connectedToDatabase)
throw new IllegalStateException("Not Connected To Database");
初期接続が成功したかどうかを判断するだけなので、サーバーがダウンした場合、これは機能しません。
関連する問題
- 1. データベース内のJava永続性
- 2. Azureサービスバスクライアント接続の永続性
- 3. 接続されている属性と接続されていない属性
- 4. 春:H2データベースの永続性
- 5. Kamailioとデータベースの接続を確認してください。
- 6. Python:Tornadoと永続的データベース接続
- 7. Paho Java - ファイルの永続性
- 8. AJAX/Javaの永続性
- 9. JavaのMySQLの接続確認テスト
- 10. Javaデータベース接続
- 11. Java永続性apiレコードOracleデータベースを削除/削除しない11g XE
- 12. Python関数:隣接行列の接続性を確認してください
- 13. Javaデータベースの接続
- 14. ラップトップが接続されているWiFiエンドポイントを確認する
- 15. Oracleデータベースの障害後に永続性ユニットに再接続する方法
- 16. mysql永続接続
- 17. 永続的な無知のドメインオブジェクトの妥当性確認
- 18. Healthvault Java API:接続タイムアウト:接続
- 19. 接続を確認する
- 20. データベースなしのシンプルなpojo永続性
- 21. Android - インターネット接続を確認して自動接続する
- 22. 永続データベース接続はどのようにPHPに格納されますか?
- 23. C++データベースの接続性?
- 24. MONO/ASP.NET認証の永続性
- 25. ソケット接続の確認
- 26. EGORefreshTableHeaderView接続の確認
- 27. インターネット接続の確認
- 28. 接続の確認方法
- 29. sqlalchemyオートロードされたormの永続性
- 30. APIデータベース接続の問題
JAVAで従来のデータベース接続に使用されていたコードを投稿したため、これは答えではありません。これは、JPAとpersistence.xmlファイルを使用するプロジェクトでは機能しません。 – dpetersen