Springjdbc+mysqlデータベースおよびデータベーステーブルが存在するかどうかを判断


最近Springjdbc+Mysqlを用いてプロジェクトを開発し,2つの問題を記録した.
  • データベースが存在するか否かを判断する
  • .
    方法1:オリジナルMysql文を使用し、use database方式で実行し、実行結果に異常が発生したか否かによってデータベースが存在するか否かを判断する.
    public boolean isDbExist(String dbName) {
    		try {
    			String sql = "USE "+dbName;
    			jdbcTemplate.execute(sql);
    			return true;		
    		} catch (Exception e) {
    			System.out.println("      ");	
    			return false;
    		}			
    	}

    方法2:データベース接続を確立する方法を用いて判断するのも、異常が発生しているかどうかによるものですが、この方法はマルチデータソースであればデータソースを繰り返し切り替える必要があり、便利ではありません
    public boolean isDbExist(String dbName) {
    		Connection conn = null;
    		try {
    			conn = jdbcTemplate.getDataSource().getConnection();
    			return true;		
    		} catch (Exception e) {
    			System.out.println("      ");			
    		}finally{
    			try {
    				conn.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}			
    		}		
    		return false;
    	}

       2.データベースのテーブルが存在するかどうかを判断
    メソッドは一般的です.テーブル名に基づいてクエリーし、レコードがあるかどうか、レコードがあるかどうか、テーブルが存在しないかどうかを確認します.そうしないと存在しません.
    public boolean isTableExist(String tableName) {
    		Connection conn = null;
    		ResultSet rs = null;
    		try {
    			conn = jdbcTemplate.getDataSource().getConnection();
    			rs = null;
    			DatabaseMetaData data = conn.getMetaData();
    			String[] types = {"TABLE"};
    			rs = data.getTables(null, null, tableName, types);
    			if(rs.next()){
    				return true;
    			}			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    			try {
    				rs.close();
    				conn.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}			
    		}
    		
    		return false;
    	}