sql >> データベース >  >> RDS >> Mysql

JavaでJTableを使用してMySQLデータベースからレコードを表示する

    以下は、MySQLデータベースからJTableにデータを読み取るときに実行したいことの非常に基本的なことを実行するクラスです。 Javaで。

    import java.awt.*;
    import java.sql.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
    
    public class TableFromMySqlDatabase extends JFrame
    {
        public TableFromMySqlDatabase()
        {
            ArrayList columnNames = new ArrayList();
            ArrayList data = new ArrayList();
    
            //  Connect to an MySQL Database, run query, get result set
            String url = "jdbc:mysql://localhost:3306/yourdb";
            String userid = "root";
            String password = "sesame";
            String sql = "SELECT * FROM animals";
    
            // Java SE 7 has try-with-resources
            // This will ensure that the sql objects are closed when the program 
            // is finished with them
            try (Connection connection = DriverManager.getConnection( url, userid, password );
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery( sql ))
            {
                ResultSetMetaData md = rs.getMetaData();
                int columns = md.getColumnCount();
    
                //  Get column names
                for (int i = 1; i <= columns; i++)
                {
                    columnNames.add( md.getColumnName(i) );
                }
    
                //  Get row data
                while (rs.next())
                {
                    ArrayList row = new ArrayList(columns);
    
                    for (int i = 1; i <= columns; i++)
                    {
                        row.add( rs.getObject(i) );
                    }
    
                    data.add( row );
                }
            }
            catch (SQLException e)
            {
                System.out.println( e.getMessage() );
            }
    
            // Create Vectors and copy over elements from ArrayLists to them
            // Vector is deprecated but I am using them in this example to keep 
            // things simple - the best practice would be to create a custom defined
            // class which inherits from the AbstractTableModel class
            Vector columnNamesVector = new Vector();
            Vector dataVector = new Vector();
    
            for (int i = 0; i < data.size(); i++)
            {
                ArrayList subArray = (ArrayList)data.get(i);
                Vector subVector = new Vector();
                for (int j = 0; j < subArray.size(); j++)
                {
                    subVector.add(subArray.get(j));
                }
                dataVector.add(subVector);
            }
    
            for (int i = 0; i < columnNames.size(); i++ )
                columnNamesVector.add(columnNames.get(i));
    
            //  Create table with database data    
            JTable table = new JTable(dataVector, columnNamesVector)
            {
                public Class getColumnClass(int column)
                {
                    for (int row = 0; row < getRowCount(); row++)
                    {
                        Object o = getValueAt(row, column);
    
                        if (o != null)
                        {
                            return o.getClass();
                        }
                    }
    
                    return Object.class;
                }
            };
    
            JScrollPane scrollPane = new JScrollPane( table );
            getContentPane().add( scrollPane );
    
            JPanel buttonPanel = new JPanel();
            getContentPane().add( buttonPanel, BorderLayout.SOUTH );
        }
    
        public static void main(String[] args)
        {
            TableFromMySqlDatabase frame = new TableFromMySqlDatabase();
            frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
            frame.pack();
            frame.setVisible(true);
        }
    }
    

    使用しているNetBeansIDEで、 MySQL JDBC Driverを追加する必要があります。 ここに表示するプロジェクトプロパティ:

    それ以外の場合、コードはSQLExceptionをスローします ドライバーが見つからないことを述べます。

    私の例では、yourdb データベースとanimalsの名前です。 クエリを実行しているテーブルの名前です。

    出力される内容は次のとおりです:

    別れのメモ:

    あなたは初心者であり、Javaの基本的なクラスと概念のいくつかを理解するのに助けが必要だと述べました。ここにいくつかリストしますが、Oracleのサイトでいつでもドキュメントを参照できることを忘れないでください。



    1. AWSRDSデータベースインスタンスのセキュリティグループを変更します

    2. ダウンタイムなしでDjangoでインデックスを作成する方法

    3. mysql.connectorでクエリキャッシュを無効にする方法

    4. MySQL変数をコマンドラインからスクリプトに渡す