您的位置:首页 > 数据库

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

2018-01-17 11:28 585 查看
import java.sql.Connection;  

import java.sql.DatabaseMetaData;  

import java.sql.DriverManager;  

import java.sql.ResultSet;  

import java.sql.ResultSetMetaData;  

import java.sql.SQLException;  

import java.sql.Statement;  

import java.sql.Types;  

  

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

public class TestMysql {  

  

    public static void main(String[] args) throws Exception {  

  

        String driver = "com.mysql.jdbc.Driver";  

        String url = "jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true";  

        String user = "root";  

        String password = "mysql0774mysql";  

  

        Class.forName(driver);  

        Connection conn = DriverManager.getConnection(url, user, password);  

        if (!conn.isClosed())  

            System.out.println("Succeeded connecting to the Database!");  

        else  

            System.err.println("connect filed");  

        // 获取所有表名  

        Statement statement = conn.createStatement();  

  

        getTables(conn);  

  

        ResultSet resultSet = statement  

                .executeQuery("select * from help_keyword");  

        // 获取列名  

        ResultSetMetaData metaData = resultSet.getMetaData();  

        for (int i = 0; i < metaData.getColumnCount(); i++) {  

            // resultSet数据下标从1开始  

            String columnName = metaData.getColumnName(i + 1);  

            int type = metaData.getColumnType(i + 1);  

            if (Types.INTEGER == type) {  

                // int  

            } else if (Types.VARCHAR == type) {  

                // String  

            }  

            System.out.print(columnName + "\t");  

        }  

        System.out.println();  

        // 获取数据  

        while (resultSet.next()) {  

            for (int
122f4
 i = 0; i < metaData.getColumnCount(); i++) {  

                // resultSet数据下标从1开始  

                System.out.print(resultSet.getString(i + 1) + "\t");  

            }  

            System.out.println();  

  

        }  

        statement.close();  

        conn.close();  

  

    }  

  

    public static String convertDatabaseCharsetType(String in, String type) {  

        String dbUser;  

        if (in != null) {  

            if (type.equals("oracle")) {  

                dbUser = in.toUpperCase();  

            } else if (type.equals("postgresql")) {  

                dbUser = "public";  

            } else if (type.equals("mysql")) {  

                dbUser = null;  

            } else if (type.equals("mssqlserver")) {  

                dbUser = null;  

            } else if (type.equals("db2")) {  

                dbUser = in.toUpperCase();  

            } else {  

                dbUser = in;  

            }  

        } else {  

            dbUser = "public";  

        }  

        return dbUser;  

    }  

  

    private static void getTables(Connection conn) throws SQLException {  

        DatabaseMetaData dbMetData = conn.getMetaData();  

        // mysql convertDatabaseCharsetType null  

        ResultSet rs = dbMetData.getTables(null,  

                convertDatabaseCharsetType("root", "mysql"), null,  

                new String[] { "TABLE", "VIEW" });  

  

        while (rs.next()) {  

            if (rs.getString(4) != null  

                    && (rs.getString(4).equalsIgnoreCase("TABLE") || rs  

                            .getString(4).equalsIgnoreCase("VIEW"))) {  

                String tableName = rs.getString(3).toLowerCase();  

                System.out.print(tableName + "\t");  

                // 根据表名提前表里面信息:  

                ResultSet colRet = dbMetData.getColumns(null, "%", tableName,  

                        "%");  

                while (colRet.next()) {  

                    String columnName = colRet.getString("COLUMN_NAME");  

                    String columnType = colRet.getString("TYPE_NAME");  

                    int datasize = colRet.getInt("COLUMN_SIZE");  

                    int digits = colRet.getInt("DECIMAL_DIGITS");  

                    int nullable = colRet.getInt("NULLABLE");  

                    // System.out.println(columnName + " " + columnType + " "+  

                    // datasize + " " + digits + " " + nullable);  

                }  

  

            }  

        }  

        System.out.println();  

  

        // resultSet数据下标从1开始 ResultSet tableRet =  

        //conn.getMetaData().getTables(null, null, "%", new String[] { "TABLE" });  

        //while (tableRet.next()) {  

        //  System.out.print(tableRet.getString(3) + "\t");  

        //}  

        //System.out.println();  

  

    }  

  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: