简体   繁体   中英

How to get all data with column name in mysql databases

I create this code for get column name in sql databases. But now I ant to modify above code for get all table data with column name. Then get all data and convert to jsonarray and pass. How I modify this code for get all table data with column name.

@Override
    public JSONArray getarray(String sheetName) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "");
            con.setAutoCommit(false);
            PreparedStatement pstm = null;
            Statement stmt = null;

            //-----------------------Drop earliye table -------------------------------------------------------------
            try {
                String sqldrop = "select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='" + sheetName.replaceAll(" ", "_") + "'";
                System.out.println(sqldrop);
                PreparedStatement mypstmt = con.prepareStatement(sqldrop);
                ResultSet resultSet = mypstmt.executeQuery();
                JSONArray jsonArray = new JSONArray();
                while (resultSet.next()) {
                    int total_rows = resultSet.getMetaData().getColumnCount();
                    JSONObject obj = new JSONObject();
                    for (int i = 0; i < total_rows; i++) {
                        String columnName = resultSet.getMetaData().getColumnLabel(i + 1).toLowerCase();

                        Object columnValue = resultSet.getObject(i + 1).toString().replaceAll("_", " ");
                        // if value in DB is null, then we set it to default value
                        if (columnValue == null) {
                            columnValue = "null";
                        }
                        /*
                         Next if block is a hack. In case when in db we have values like price and price1 there's a bug in jdbc - 
                         both this names are getting stored as price in ResulSet. Therefore when we store second column value,
                         we overwrite original value of price. To avoid that, i simply add 1 to be consistent with DB.
                         */
                        if (obj.has(columnName)) {
                            columnName += "1";
                        }
                        obj.put(columnName, columnValue);
                    }
                    jsonArray.put(obj);
                }
                mypstmt.close();
                con.commit();
                return jsonArray;
            } catch (Exception e) {
                System.out.println("There is no exist earlyer databases table!..... :( :( :( **************** " + sheetName.replaceAll(" ", "_"));
            }
//----------------------------------------------------------------------------

        } catch (ClassNotFoundException e) {
            System.out.println(e);
        } catch (SQLException ex) {
            Logger.getLogger(PassArrayDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println("%%%%%%%%%%");
        return null;
    }

My target is get all data with column name and above data pass html page as a json. So if you have any method for get all data with column name is suitable for me.

// code starts here

// This method retrieves all data from a mysql table...

public void retrieveAllData( String host, String user, String pass, String query) {

JTextArea textArea = new JTextArea();
try(
    Connection connection = DriverManager.getConnection( host, user, pass )
    Statement statement = connection.createStatement()
    ResultSet resultSet = statement.executeQuery(query)) {

        ResultSetMetaData metaData = resultSet.getMetaData();
        int totalColumns = metaData.getColumnCount();

        for( int i = 1; i <= totalColumns; i++ ) {
            textArea.append( String.format( "%-8s\t", metaData.getColumnName(i) ) );
        }
        textArea.append( "\n" );
        while( resultSet.next() ) {
            for( int i = 1; i <= totalColumns; i++ ) {
                Object object = resultSet.getObject(i).toString();
                textArea.append( String.format("%-8s\t", object) );


    }
            textArea.append( "\n" );
        }

    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM