[dúvida] ViewBD

0 respostas
D

Oi,

estou com uma dúvida neste código aqui.

Trata-se de um programa para mostrar mais de uma
tabela, ou até mesmo mais de um BD.

Mas está dando erro na url de conexão.

segue o código:

import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.FileInputStream;
import java.io.IOException;
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.util.ArrayList;
import java.util.Properties;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class ViewDB {
  public static void main(String[] args) {
    JFrame frame = new ViewDBFrame();
    frame.show();
  }
}

class ViewDBFrame extends JFrame implements ActionListener {
  public ViewDBFrame() {
    setTitle("ViewDB");
    setLocation(350,100);
    setSize(300, 200);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });

    Container contentPane = getContentPane();

    tableNames = new JComboBox();
    tableNames.addActionListener(this);

    dataPanel = new JPanel();
    contentPane.add(dataPanel, "Center");

    nextButton = new JButton("Next");
    nextButton.addActionListener(this);
    JPanel p = new JPanel();
    p.add(nextButton);
    contentPane.add(p, "South");

    fields = new ArrayList();

    try {
      con = getConnection();
      stmt = con.createStatement();
      md = con.getMetaData();
  ResultSet mrs = md.getTables(null, null, null, new String[] { "TABLE" });
      while (mrs.next())
        tableNames.addItem(mrs.getString(3));
      mrs.close();
    } catch (Exception e) {
      JOptionPane.showMessageDialog(this, e);
    }

    contentPane.add(tableNames, "North");
  }

  public static Connection getConnection() throws SQLException, IOException {
    Properties props = new Properties();
    String fileName = "properties/ViewDB.properties";
    FileInputStream in = new FileInputStream(fileName);
    props.load(in);

   // String drivers = props.getProperty("jdbc.Drivers");
   String drivers = props.getProperty("com.mysql.jdbc.Driver");
    if (drivers != null)
    /*System.setProperty("jdbc.Drivers", drivers);
    String url = props.getProperty("jdbc.url");*/
    System.setProperty("com.mysql.jdbc.Driver", drivers);
    //String url = props.getProperty("jdbc.url");
    String url = props.getProperty("jdbc:mysql://localhost/testando?");
    
    /*String username = props.getProperty("jdbc.username");
    String password = props.getProperty("jdbc.password");*/
    String username = props.getProperty("root");
    String password = props.getProperty("2017");
    

    return DriverManager.getConnection(url, username, password);
  }

  private void add(Container p, Component c, GridBagConstraints gbc, int x,
      int y, int w, int h) {
    gbc.gridx = x;
    gbc.gridy = y;
    gbc.gridwidth = w;
    gbc.gridheight = h;
    p.add(c, gbc);
  }

  public void actionPerformed(ActionEvent evt) {
    if (evt.getSource() == nextButton) {
      showNextRow();
    } else if (evt.getSource() == tableNames) {
      remove(dataPanel);
      dataPanel = new JPanel();
      fields.clear();
      dataPanel.setLayout(new GridBagLayout());
      GridBagConstraints gbc = new GridBagConstraints();
      gbc.weighty = 100;

      try {
        String tableName = (String) tableNames.getSelectedItem();
        if (rs != null)
          rs.close();
        rs = stmt.executeQuery("SELECT * FROM " + tableName);
        ResultSetMetaData rsmd = rs.getMetaData();
        for (int i = 1; i <= rsmd.getColumnCount(); i++) {
          String columnName = rsmd.getColumnLabel(i);
          int columnWidth = rsmd.getColumnDisplaySize(i);
          JTextField tb = new JTextField(columnWidth);
          fields.add(tb);

          gbc.weightx = 0;
          gbc.anchor = GridBagConstraints.EAST;
          gbc.fill = GridBagConstraints.NONE;
          add(dataPanel, new JLabel(columnName), gbc, 0, i - 1, 1, 1);

          gbc.weightx = 100;
          gbc.anchor = GridBagConstraints.WEST;
          gbc.fill = GridBagConstraints.HORIZONTAL;
          add(dataPanel, tb, gbc, 1, i - 1, 1, 1);
        }
      } catch (Exception e) {
        JOptionPane.showMessageDialog(this, e);
      }
      getContentPane().add(dataPanel, "Center");
      doLayout();
      pack();

      showNextRow();
    }
  }

  public void showNextRow() {
    if (rs == null)
      return;
    {
      try {
        if (rs.next()) {
          for (int i = 1; i <= fields.size(); i++) {
            String field = rs.getString(i);
            JTextField tb = (JTextField) fields.get(i - 1);
            tb.setText(field);
          }
        } else {
          rs.close();
          rs = null;
        }
      } catch (Exception e) {
        System.out.println("Error " + e);
      }
    }
  }

  private JButton nextButton;

  private JPanel dataPanel;

  private JComboBox tableNames;

  private ArrayList fields;

  private Connection con;

  private Statement stmt;

  private DatabaseMetaData md;

  private ResultSet rs;
}

//viewDB.properties
/* 
 * jdbc.drivers=com.mysql.jdbc.Driver 
 * jdbc.url=jdbc:mysql://localhost/testando
 * jdbc.username=root 
 * jdbc.password=2017  
 */

[img]http://i40.servimg.com/u/f40/11/80/81/44/duvida10.gif[/img]

[img]http://i40.servimg.com/u/f40/11/80/81/44/duvida11.gif[/img]

Lembrando que é preciso ter um arquivo chamado "ViewBD.properties" na pasta "properties".
Basta modificar o diretório e o nome.

Este sim, irá me ajudar e tanto nos meus estudos!

Sei que já perturbei demais vocês, mas necessito desta ajuda.

Obrigado.

Criado 27 de maio de 2008
Respostas 0
Participantes 1