jdbc链接数据库,获取表名,字段名和数据

[java] view plain copy
  1. import java.sql.Connection;  
  2. import java.sql.DatabaseMetaData;  
  3. import java.sql.DriverManager;  
  4. import java.sql.ResultSet;  
  5. import java.sql.ResultSetMetaData;  
  6. import java.sql.SQLException;  
  7. import java.sql.Statement;  
  8. import java.sql.Types;  
  9.   
  10. //jdbc链接数据库,获取表名,字段名和数据  
  11. public class TestMysql {  
  12.   
  13.     public static void main(String[] args) throws Exception {  
  14.   
  15.         String driver = "com.mysql.jdbc.Driver";  
  16.         String url = "jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true";  
  17.         String user = "root";  
  18.         String password = "mysql0774mysql";  
  19.   
  20.         Class.forName(driver);  
  21.         Connection conn = DriverManager.getConnection(url, user, password);  
  22.         if (!conn.isClosed())  
  23.             System.out.println("Succeeded connecting to the Database!");  
  24.         else  
  25.             System.err.println("connect filed");  
  26.         // 获取所有表名  
  27.         Statement statement = conn.createStatement();  
  28.   
  29.         getTables(conn);  
  30.   
  31.         ResultSet resultSet = statement  
  32.                 .executeQuery("select * from help_keyword");  
  33.         // 获取列名  
  34.         ResultSetMetaData metaData = resultSet.getMetaData();  
  35.         for (int i = 0; i < metaData.getColumnCount(); i++) {  
  36.             // resultSet数据下标从1开始  
  37.             String columnName = metaData.getColumnName(i + 1);  
  38.             int type = metaData.getColumnType(i + 1);  
  39.             if (Types.INTEGER == type) {  
  40.                 // int  
  41.             } else if (Types.VARCHAR == type) {  
  42.                 // String  
  43.             }  
  44.             System.out.print(columnName + " ");  
  45.         }  
  46.         System.out.println();  
  47.         // 获取数据  
  48.         while (resultSet.next()) {  
  49.             for (int i = 0; i < metaData.getColumnCount(); i++) {  
  50.                 // resultSet数据下标从1开始  
  51.                 System.out.print(resultSet.getString(i + 1) + " ");  
  52.             }  
  53.             System.out.println();  
  54.   
  55.         }  
  56.         statement.close();  
  57.         conn.close();  
  58.   
  59.     }  
  60.   
  61.     public static String convertDatabaseCharsetType(String in, String type) {  
  62.         String dbUser;  
  63.         if (in != null) {  
  64.             if (type.equals("oracle")) {  
  65.                 dbUser = in.toUpperCase();  
  66.             } else if (type.equals("postgresql")) {  
  67.                 dbUser = "public";  
  68.             } else if (type.equals("mysql")) {  
  69.                 dbUser = null;  
  70.             } else if (type.equals("mssqlserver")) {  
  71.                 dbUser = null;  
  72.             } else if (type.equals("db2")) {  
  73.                 dbUser = in.toUpperCase();  
  74.             } else {  
  75.                 dbUser = in;  
  76.             }  
  77.         } else {  
  78.             dbUser = "public";  
  79.         }  
  80.         return dbUser;  
  81.     }  
  82.   
  83.     private static void getTables(Connection conn) throws SQLException {  
  84.         DatabaseMetaData dbMetData = conn.getMetaData();  
  85.         // mysql convertDatabaseCharsetType null  
  86.         ResultSet rs = dbMetData.getTables(null,  
  87.                 convertDatabaseCharsetType("root", "mysql"), null,  
  88.                 new String[] { "TABLE", "VIEW" });  
  89.   
  90.         while (rs.next()) {  
  91.             if (rs.getString(4) != null  
  92.                     && (rs.getString(4).equalsIgnoreCase("TABLE") || rs  
  93.                             .getString(4).equalsIgnoreCase("VIEW"))) {  
  94.                 String tableName = rs.getString(3).toLowerCase();  
  95.                 System.out.print(tableName + " ");  
  96.                 // 根据表名提前表里面信息:  
  97.                 ResultSet colRet = dbMetData.getColumns(null, "%", tableName,  
  98.                         "%");  
  99.                 while (colRet.next()) {  
  100.                     String columnName = colRet.getString("COLUMN_NAME");  
  101.                     String columnType = colRet.getString("TYPE_NAME");  
  102.                     int datasize = colRet.getInt("COLUMN_SIZE");  
  103.                     int digits = colRet.getInt("DECIMAL_DIGITS");  
  104.                     int nullable = colRet.getInt("NULLABLE");  
  105.                     // System.out.println(columnName + " " + columnType + " "+  
  106.                     // datasize + " " + digits + " " + nullable);  
  107.                 }  
  108.   
  109.             }  
  110.         }  
  111.         System.out.println();  
  112.   
  113.         // resultSet数据下标从1开始 ResultSet tableRet =  
  114.         //conn.getMetaData().getTables(null, null, "%", new String[] { "TABLE" });  
  115.         //while (tableRet.next()) {  
  116.         //  System.out.print(tableRet.getString(3) + " ");  
  117.         //}  
  118.         //System.out.println();  
  119.   
  120.     }  
  121.   
原文地址:https://www.cnblogs.com/shizhijie/p/7459016.html