Como obter a estrutura da tabela do banco de dados.

1. Inicialize estes dois modelos durante a injeção.

Copiar código
    /** 
     * Injeta a fonte de dados, que está configurada no arquivo de configuração do Spring 
     * Inicializa esses dois modelos ao injetar 
     * @param dataSource 
     * Método create author: yanwei 
     * Método create dateTime: 2011-11-2 03:43 PM :13 
     * Autor de atualização do método: 
     * Atualização do método dateTime: 
     */ 
    @Resource public void setDataSource(DataSource dataSource) {
         this .dataSource = dataSource; 
        jdbcTemplate = new JdbcTemplate(dataSource); 
        simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource); 
    }
     
Copiar código

2. Obtenha informações sobre a estrutura da tabela.

Copiar código
1  /** 2      * Obter informações sobre a estrutura da tabela
 3      * @param tableName nome da tabela
 4      * @return 5      * @throws Exceção
 6      * Método criar autor: yanwei
 7      * Método criar dateTime: 2011-12-21 13:01:17 PM
 8      * Autor de atualização do método:
 9      * Atualização do método dateTime:
 10 */ 11 public List<DsClientColumnInfo> getDsTableColumnInfo(String tableName) throws DataAccessFailureException{
 12 13          ResultSet resultSet = null ;

   
      
              
14          Connection connection = null ;
 15          java.util.List<DsClientColumnInfo> clientTableInfos = new ArrayList<DsClientColumnInfo>();
 16          try {
 17              connection = this .jdbcTemplate.getDataSource().getConnection();
 18              // Obtém informações da coluna 19              resultSet = connection.getMetaData().getColumns( null , null , tableName, null );
 20 while (resultSet.next()) {
 21 // Obtém o nome do campo 22
                               
                  String name = resultSet.getString("COLUMN_NAME");
 23                   // Obtém o nome do tipo de campo 24                   String type = resultSet.getString("TYPE_NAME");
 25 // Obtém o tamanho do campo 26 int size = resultSet.getInt("COLUMN_SIZE ");
 27 // Obtém comentários de campo 28                   String remark = resultSet.getString("REMARKS");
 29                   DsClientColumnInfo info = new DsClientColumnInfo( null , null , null , name, remark, size, type, "false");
 30                   clientTableInfos .adicionar (informações);
 31
                  
                                    
             }
 32              
33              // Obtém informações da chave primária 34              resultSet = connection.getMetaData().getPrimaryKeys( null , null , tableName);
 35 while (resultSet.next()){
 36                   String PrimaryKey = resultSet.getString("COLUMN_NAME");
 37 // Defina se é a chave primária 38 for (DsClientColumnInfo dsClientColumnInfo : clientTableInfos) {
 39 if (primaryKey != null && PrimaryKey.equals(dsClientColumnInfo.getClientColumnCode()))
 40                          dsClientColumnInfo.setIsParmaryKey("true");
 41
                               
                                                            else  
42                          dsClientColumnInfo.setIsParmaryKey("false");
 43                  }
 44              }
 45              
46              // Obtém informações de chave estrangeira 47              resultSet = connection.getMetaData().getImportedKeys( null , null , tableName);
 48 while (resultSet.next()) {
 49                  String exportedKey = resultSet.getString("FKCOLUMN_NAME");
 50 // Define se é uma chave estrangeira 51 for (DsClientColumnInfo dsClientColumnInfo : clientTableInfos) {
 52 if (exportedKey != null
                              
                                           && exportedKey.equals(dsClientColumnInfo.getClientColumnCode()))
 53                              dsClientColumnInfo.setIsImportedKey("true");
 54                          else  
55                              dsClientColumnInfo.setIsImportedKey("false");
 56                  }
 57              }
 58              
59              
60          } catch (Exception e) {
 6              1e .printStackTrace();
 62              throw  new RuntimeException("Falha ao obter informações do campo, informe o problema ao mantenedor." + e.getMessage(), e); 63 }
 finalmente          { 64 if
 (              resultSet !=null )
 65                  try {
 66                      resultSet.close();
 67                  } catch (SQLException e) {
 68                      e.printStackTrace();
 69                         throw  new DataAccessFailureException("Falha ao fechar o conjunto de resultados resultSet.",e);
 70                  } finalmente {
 71                      if (conexão! = null )
 72                          try {
 73                              connection.close();
 74                          } catch (SQLException e) {
 75                             e.printStackTrace();
 76                                 throw  new DataAccessFailureException("Falha ao fechar conexão.",e);
 77                          }
 78                  }
 79          }
 80          
81          Set set = new HashSet();
 82          set.addAll(clientTableInfos);
 83          clientTableInfos.clear ();
 84          clientTableInfos.addAll(set);
 85          return clientTableInfos;
 86      }
Copiar código

3. Obtenha todas as tabelas do banco de dados.

Copiar código
 1 /**
 2      * 获得数据库中所有的表
 3      * @return
 4      * Method create author: yanwei
 5      * Method create dateTime: 2012-1-5 上午11:23:54
 6      * Method update author:
 7      * Method update dateTime:
 8      * @throws SQLException 
 9 */
10     public Map<String, String> getDatabaseTables() throws DataAccessFailureException{
11         ResultSet resultSet = null;
12         Connection connection = null;
13         Map<String, String> map = new HashMap<String, String>();
14         try {
15              String[]   types   =   {"TABLE"};    
16             connection = this.jdbcTemplate.getDataSource().getConnection();
17             String databaseName = SynXmlAnalysis.getElementValueByName(DATABASE_NAME);
18             resultSet = connection.getMetaData().getTables(null, databaseName, null, types);
19             while(resultSet.next()){
20                 String tableName = resultSet.getString("TABLE_NAME");
21                 String remark = resultSet.getString("REMARKS");
22                 map.put(tableName, remark);
23             }
24         } catch (SQLException e) {
25             e.printStackTrace();
26             throw new DataAccessFailureException(e);
27         }catch (Exception e) {
28             e.printStackTrace();
29         }finally{
30             if(resultSet != null)
31                 try {
32                     resultSet.close();
33                 } catch (SQLException e) {
34                     e.printStackTrace();
35                        throw new DataAccessFailureException("关闭结果集resultSet失败。",e);
36                 }finally{
37                     if(connection != null)
38                         try {
39                             connection.close();
40                         } catch (SQLException e) {
41                             e.printStackTrace();
42                                throw new DataAccessFailureException("Falha ao fechar a conexão.",e);
 43                          }
 44                  }
 45          
46          }
 47          return map;
 48      }
Copiar código

Acho que você gosta

Origin blog.csdn.net/linwei_hello/article/details/21639657
Recomendado
Clasificación