Jump to content

Java x MYSQL


Hercles
 Share

Recommended Posts

Caros, quando tento cadastrar um nome (pela interface grafica) neste programa abaixo da erros. Como faço pra descobrir aonde esta o erro? Já confiri o nome do banco e a tabela.

import java.awt.HeadlessException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;

public class Interface extends javax.swing.JFrame {
 static Connection connection;
private static Statement statement;

public Interface() {
	initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

	jPanel1 = new javax.swing.JPanel();
	nomes = new javax.swing.JTextField();
	n = new javax.swing.JLabel();
	cadastrar = new javax.swing.JButton();

	setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

	n.setText("Nome");

	cadastrar.setText("Cadastrar");
	cadastrar.addActionListener(new java.awt.event.ActionListener() {
		public void actionPerformed(java.awt.event.ActionEvent evt) {
			cadastrarActionPerformed(evt);
		}
	});

	javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
	jPanel1.setLayout(jPanel1Layout);
	jPanel1Layout.setHorizontalGroup(
		jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
		.addGroup(jPanel1Layout.createSequentialGroup()
			.addGap(45, 45, 45)
			.addComponent(n)
			.addGap(18, 18, 18)
			.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addComponent(cadastrar)
				.addComponent(nomes, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE))
			.addContainerGap(143, Short.MAX_VALUE))
	);
	jPanel1Layout.setVerticalGroup(
		jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
		.addGroup(jPanel1Layout.createSequentialGroup()
			.addGap(83, 83, 83)
			.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
				.addComponent(nomes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
				.addComponent(n))
			.addGap(27, 27, 27)
			.addComponent(cadastrar)
			.addContainerGap(147, Short.MAX_VALUE))
	);

	javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
	getContentPane().setLayout(layout);
	layout.setHorizontalGroup(
		layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
		.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
	);
	layout.setVerticalGroup(
		layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
		.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
	);

	pack();
}// </editor-fold>//GEN-END:initComponents

private void cadastrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cadastrarActionPerformed
	try
	{
		conectaBanco();
		String dados  = nomes.getText();
		statement.executeUpdate("INSERT INTO dados (nome) VALUES ('"+dados+"')");
		JOptionPane.showMessageDialog(this,"Dados Salvo");
		nomes.setText("");
		connection.close();
	}
	catch(SQLException | HeadlessException e)
	{

	}
}//GEN-LAST:event_cadastrarActionPerformed


public static void main(String args[]) {

	java.awt.EventQueue.invokeLater(() -> {
		new Interface().setVisible(true);
	});
}

public void conectaBanco()
{
	try
	{
	  Class.forName("com.mysql.jdbc.Driver");
	  connection = DriverManager.getConnection("jdbc:mysql://localhost/teste","jpm","jpm");
	  statement = connection.createStatement();
	  System.out.println("Banco de dados conectado com sucesso");
	}
	catch (ClassNotFoundException | SQLException e)			
	{
		System.out.println("Banco de dados não conectado");  
	}
}

// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton cadastrar;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel n;
private javax.swing.JTextField nomes;
// End of variables declaration//GEN-END:variables
}

Link to comment
Share on other sites

um monte de erros. Criei um "catch" para informar "Banco de dados não conectado" mas ta tudo certo.. Usuário e senha... Este proplema é só na interface gráfica, quando faço de outra forma funciona.

Banco de dados não conectado

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at Interface.cadastrarActionPerformed(Interface.java:169)

at Interface.access$000(Interface.java:14)

at Interface$1.actionPerformed(Interface.java:57)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6527)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6292)

at java.awt.Container.processEvent(Container.java:2234)

at java.awt.Component.dispatchEventImpl(Component.java:4883)

at java.awt.Container.dispatchEventImpl(Container.java:2292)

at java.awt.Component.dispatchEvent(Component.java:4705)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)

at java.awt.Container.dispatchEventImpl(Container.java:2278)

at java.awt.window.dispatchEventImpl(window.java:2739)

at java.awt.Component.dispatchEvent(Component.java:4705)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)

at java.awt.EventQueue.access$400(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:697)

at java.awt.EventQueue$3.run(EventQueue.java:691)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:719)

at java.awt.EventQueue$4.run(EventQueue.java:717)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Link to comment
Share on other sites

você diz isso?

  public void conectaBanco()
{
	//try
	//{
		Class.forName("com.mysql.jdbc.Driver");
		connection = DriverManager.getConnection("jdbc:mysql://localhost/teste","jpm","jpm");
		statement  = connection.createStatement();
		System.out.println("Banco de dados conectado com sucesso");

  /**  }
	catch (ClassNotFoundException | SQLException e)
	{
		System.out.println("Banco de dados não conectado");
	}**/
}

run:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown

at Interface.conectaBanco(Interface.java:268)

at Interface.cadastrarActionPerformed(Interface.java:167)

at Interface.access$000(Interface.java:14)

at Interface$1.actionPerformed(Interface.java:57)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6527)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6292)

at java.awt.Container.processEvent(Container.java:2234)

at java.awt.Component.dispatchEventImpl(Component.java:4883)

at java.awt.Container.dispatchEventImpl(Container.java:2292)

at java.awt.Component.dispatchEvent(Component.java:4705)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)

at java.awt.Container.dispatchEventImpl(Container.java:2278)

at java.awt.window.dispatchEventImpl(window.java:2739)

at java.awt.Component.dispatchEvent(Component.java:4705)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)

at java.awt.EventQueue.access$400(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:697)

at java.awt.EventQueue$3.run(EventQueue.java:691)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:719)

at java.awt.EventQueue$4.run(EventQueue.java:717)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Link to comment
Share on other sites

No caso em questão ele vai tentar fazer o bloco de linhas para a conexão, caso dê erro ele vai exibir que o banco não foi conectado...

Sim.

Mas convém saber o porque que desse erro.

Para isso faz e.getMessage(); ou outro método.

Por acaso tens o mysql a correr quando tentas fazer a ligação?

Vê este tutorial http://zetcode.com/db/mysqljava/

Edited by AJBM
  • Vote 1
Link to comment
Share on other sites

Mas o try/ Catch tem a mesma função que em PHP e Lazarus (Delphi)? No caso em questão ele vai tentar fazer o bloco de linhas para a conexão, caso dê erro ele vai exibir que o banco não foi conectado...

Estás a fazer uma má utilização das excepções. Se a conexão falhou, podes imprimir a mensagem, mas deves também impedir operações futuras sobre a conexão que falhou. Daí ser conveniente a função conectaBanco() lançar a excepção, em vez de a apanhar. Adicionalmente, e como o AJBM referiu, convém fazer log de alguma forma da excepção que foi lançada. O printStackTrace() é uma forma simples (não necessariamente a melhor) de fazer output da excepção.

Link to comment
Share on other sites

Estranho porque quado eu faço desta forma, sem a parte grafica funciona.

package conoectandobanco2;

public class ConoectandoBanco2 {
   public static void main(String[] args)
   {
   Banco banco = new Banco();
   banco.conectabanco();
   banco.cadastrar("insert into cadastro (id, nome) values (1,'maria')");
   //banco.deleta("DELETE FROM cadastro WHERE id = 1");
   //banco.atualiza("UPDATE cadastro SET nome ='Ana' WHERE ID = '1'");
   banco.consulta();
   }

}

package conoectandobanco2;

import java.rmi.server.ExportException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import static javax.swing.text.html.HTML.Tag.SELECT;


public class Banco
{
private static Connection connection;
private static Statement statement;
private static ResultSet resultset;
private static ResultSetMetaData MetaData;

public void conectabanco()
{
   try
   {
 Class.forName("com.mysql.jdbc.Driver");
 connection = DriverManager.getConnection("jdbc:mysql://localhost/teste","jpm","jpm");
 statement = connection.createStatement();
    System.out.println("Banco de dados conectado");

   }
   catch (ClassNotFoundException | SQLException e)
   {
    System.out.println("banco de dados não conectado");   
   }
}
   public void cadastrar(String sql)
   {
    try
    {
	    statement = null;
	    statement = connection.createStatement();
	    statement.executeUpdate(sql);
    }
    catch (Exception e)
    {
	    System.out.println("Já cadastrado");
    }
   }

   public void deleta(String sql)
   {
    try
    {
	 statement = null;
	 statement = connection.createStatement();
	 statement.executeUpdate(sql);   
    }
    catch (Exception e)
    {
	    System.out.println("Não foi possivel deletar");
    }
   }
   public void atualiza(String sql)
	    {
    try
    {
	 statement = null;
	 statement = connection.createStatement();
	 statement.executeUpdate(sql);   
    }
    catch (Exception e)
    {
	    System.out.println("Já foi modificado");
    }
   }

   public void consulta()
   {
    try
    {
	    resultset = statement.executeQuery("SELECT * FROM cadastro");
	    MetaData = resultset.getMetaData();

	    while (resultset.next())
	    {
		    int coluna = MetaData.getColumnCount();
				    for (int i = 1; i<=coluna; i++)
				    {
					    System.out.printf("%-2s\t", resultset.getObject(i));

				    }
				    System.out.println("");
	    }

	    }
		  catch (Exception e)
		  {
			  System.out.println("Não foi possivel consultar");

    }
   }

   public void encerra()
   {
  try
  {
	  statement.close();
	  connection.close();
	  System.out.println("Banco de dados finalizado com sucesso");

  }
  catch (Exception e)
  {
	  System.out.println("Banco de dados não foi finalizado");
  }
   }
  }
Link to comment
Share on other sites

Se a conexão falhou [...] deves também impedir operações futuras sobre a conexão que falhou. Daí ser conveniente a função conectaBanco() lançar a excepção, em vez de a apanhar. Adicionalmente [...] convém fazer log de alguma forma da excepção que foi lançada. O printStackTrace() é uma forma simples [...] de fazer output da excepção.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.