2011-08-19 2 views
0

Comme indiqué dans le titre, je veux obtenir le nom de la base de données dans sqlserver, toutes les informations que je connais est nom de la source de données, login/mot de passe quelques pointeurs sur la façon de récupérer le nom de la base de données correctement, en Java, merci!Comment obtenir le nom de base de données sqlserver du nom de la source de données en Java

Même

+0

Qu'entendez-vous par nom de base de données? Faites-vous référence au nom d'instance MS-SQL Server ou à un autre nom? –

+0

je voulais dire le nom de l'instance de base de données, comme indiqué ci-dessous: Microsoft SQL Server ODBC version du pilote 06.00.6002 données Nom de la source: SM9 Source de données Description: serveur: *** Base de données: SM9 cryptage des données: Non – Even

Répondre

1

obtenir une instance de java.sql.DatabaseMetaData de l'objet de connexion.

Les noms de la base de données peuvent être obtenus via la méthode getCatalogs() ou getSchemas() (cela dépend du fournisseur du pilote JDBC).

ResultSet rs=cn.getMetaData().getSchemas(); 
while(rs.next()) { 
    System.out.println(rs.getString(1)); 
} 

Ou utiliser la méthode Connection.getCatalog() ou Connection.getSchema().

Dans le cas où vous êtes intéressé d'obtenir host name ou ip address du serveur de base de données Oracle.

ResultSet rs=st.executeQuery("select UTL_INADDR.GET_HOST_NAME from dual"); 
while(rs.next()) 
    System.out.println(rs.getString(1)); 
0

Vous pouvez utiliser:

con.getClientInfo() 

pour obtenir toutes les informations/propriétés de votre base de données et puis pointez sur la propriété spécifique de interest.As dans votre cas con.getClientInfo (« base de données ») devrait faire le travail. Cela fonctionne pour moi dans le serveur sql.

+0

Selon https://technet.microsoft.com/en-us/library/dd571353%28v=sql.105%29.aspx La méthode retourne toujours null car le pilote MS ne prend pas en charge les propriétés du client. – anydoby

1
public List<String> getServerDataBaseNameList() { 
    List<String> dataBaseNameList = new ArrayList<String>(); 
    try { 
     ResultSet resultSet = con.getConnectionMetaData().getCatalogs(); 
     if (resultSet == null) { 
      return null; 
     } 
     while (resultSet.next()) { 
      dataBaseNameList.add(resultSet.getString(1)); 
     } 
     return dataBaseNameList; 
    } catch (SQLException e) { 
     logger.error("Error during execute select query for fetch server database name"); 
    } 
    return null; 
} 
Questions connexes