Estou estudando e criando um controle de contas pessoais, mas estou tendo problemas, fiz as seguintes classes:
MysqlBD.java
package BD;
/** @author pcjardim */
// Classe para conectar com MySQL
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MysqlBD {
//Declarando as variáveis públicas
public String host;
public Connection conn = null;
public boolean status;
// fim das declarações
public MysqlBD(String hosttmp){
host = hosttmp;
status = false;
}
public void connect(){
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(host);
status = true;
System.out.println("A conexão foi um sucesso!");
}
catch(ClassNotFoundException e){
System.out.println("Excessão Classe não encontrada!");
e.printStackTrace();
}
catch(SQLException e){
System.out.println("SQL Exception... Não conectado!");
e.printStackTrace();
}
}
public void disconnect(){
try{
conn.close();
status = false;
System.out.println("Conexão Fechada!");
}
catch(SQLException erro){
System.out.println("Erro no ferchamento da conexão!");
//erro.printStackTrace();
}
}
public boolean isconnected(){
return status;
}
}
MysqlQuery.java
package BD;
/** @author pcjardim */
// Classe para conectar com MySQL
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
public class MysqlQuery {
// Declarando as variáveis públicas
public Connection Database = null;
public boolean status;
public ResultSet rs;
public Statement stm;
private boolean statusreg = true;
// fim da declaração
public MysqlQuery(Connection Db){
try{
Database = Db;
stm = Database.createStatement();
status = false;
}
catch(SQLException e){
e.printStackTrace();
System.out.println("Erro ao criar Query!");
}
}
public void open(String sql){
try{
rs = stm.executeQuery(sql);
status = true;
}
catch(SQLException e){
status = false;
System.out.println("Erro ao executar Query!");
e.printStackTrace();
}
}
public void execute(String sql){
try{
stm.execute(sql);
status = true;
}
catch(SQLException e){
status = false;
System.out.println("Erro ao executar Query!");
e.printStackTrace();
}
}
public String fieldbyname(String field){
String value = null;
try{
if (rs.getString(1) != null)
status = false;
if (status)
rs.next();
value = rs.getString(field);
status = true;
}
catch(SQLException e){
System.out.println("Fiel invalido!");
}
return value;
}
public int recordcount(){
int tot = 0;
try{
rs.first();
do{
tot++;
}
while(rs.next());
}
catch(SQLException e){
status = false;
System.out.println("Erro ao executar Query!");
e.printStackTrace();
}
return tot;
}
public boolean next(){
boolean retorno = false;
try{
if (rs.next())
retorno = true;
}
catch(SQLException e) {
System.out.println("Erro ao executar Query!");
}
return retorno;
}
public boolean prev(){
boolean retorno = false;
try{
if(rs.previous())
retorno = true;
}
catch(SQLException e){
System.out.println("Erro ao executar previous!");
}
return retorno;
}
public boolean first(){
boolean retorno = false;
try{
if(rs.first())
retorno = true;
}
catch(SQLException e){
System.out.println("Erro ao executar first!");
}
return retorno;
}
public boolean last(){
boolean retorno = false;
try{
if(rs.last())
retorno = true;
}
catch(SQLException e){
System.out.println("Erro ao executar last!");
}
return retorno;
}
}
Cadastro.java
/** @author pcjardim */
package domain;
import javax.swing.JOptionPane;
public class Cadastro {
private int codigoP, codigoD, codP, codD, tipo;
private String nome, descricao, mes, ano, obs;
private double valor;
public void cadPessoa(String n){
this.nome = n;
}
public String getPessoa(){
return nome;
}
public void cadDescricao (int t, String d){
this.tipo = t;
this.descricao = d;
}
public int getTipo(){
return tipo;
}
public String getDescricao(){
return descricao;
}
public void cadPD (int cP, int cD, double v, String m, String a, String o){
this.codP = cP;
this.codD = cD;
this.valor = v;
this.mes = m;
this.ano = a;
this.obs = o;
}
public int getcP(){
return codP;
}
public int getcD(){
return codD;
}
public double getValor(){
return valor;
}
public String getMes(){
return mes;
}
public String getAno(){
return ano;
}
public String getObs(){
return obs;
}
public String cadFrame(){
String nome = JOptionPane.showInputDialog("Digite o nome");
return nome;
}
}
MenuFrame.java
[code]
/** @pcjardim */
package Main;
import BD.MysqlBD;
import BD.MysqlQuery;
import domain.Cadastro;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MenuFrame extends JFrame {
BD.MysqlBD banco = new MysqlBD("jdbc:mysql://localhost/contaspessoais?user=root&password=");
private JCheckBoxMenuItem styleItems[]; // itens do menu Font Style
private JLabel displayJLabel; // exibe texto de exemplo
private ButtonGroup fontButtonGroup; // gerencia itens do menu Color;
private ButtonGroup colorButtonGroup; // gerencia itens do menu Color;
private int style; //utilizado para criar estilos de fontes
public String a;
public MenuFrame(final MysqlQuery q){
super("Controle de Contas Pessoais");
JMenu fileMenu = new JMenu("Cadastro"); // cria o meu Cadastro
fileMenu.setMnemonic('C'); // configura o mnemônico como C
// cria item de menu Pessoas
JMenuItem aboutItem = new JMenuItem("Pessoas");
aboutItem.setMnemonic('P'); //configura o mnemônico como P
fileMenu.add(aboutItem); // adiciona o item Pessoas ao menu Cadastro
aboutItem.addActionListener(
new ActionListener(){ // classe interna anônima
// Insere a pessoa no BD
public void actionPerformed(ActionEvent event){
Cadastro cadastro = new Cadastro();
cadastro.cadPessoa(cadastro.cadFramePessoa());
q.execute("insert into pessoa (nome) values ('"+cadastro.getPessoa()+"')");
} // fim do método actionPerformed
} // fim da classe interna anônima
);
JMenuItem exitItem = new JMenuItem("Descrição"); //cria o item descrição
exitItem.setMnemonic('D'); // configura o mnemônico como D
fileMenu.add(exitItem); // adiciona o item Descrição ao meu Cadstro
exitItem.addActionListener(
new ActionListener(){ //classe interna anônima
// Insere a descrição no BD
public void actionPerformed(ActionEvent event){
Cadastro cadastro = new Cadastro();
cadastro.cadDescricao(cadastro.cadFrameDescricao());
if (cadastro.getDescricao() == 0){
q.execute("insert into descricao (tipo, descricao) values ('"+cadastro.getDescricao()+"','Crédito')");
}
else {
q.execute("insert into descricao (tipo, descricao) values ('"+cadastro.getDescricao()+"','Débito')");
}
} // fim do método actionPerformed
} // fim da classe interna anônima
); // fim da chamada para addAction Listener
JMenuBar bar = new JMenuBar(); // cria a barra de menus
setJMenuBar(bar); // adiciona uma barra de menus ao aplicativo
bar.add(fileMenu); // adiciona o menu Cadastro à barra de menus
}
}[/code]
Na classe MenuFrame não to conseguindo inserir a linha
query1.execute("insert into pessoa (nome) values ('"+cadastro.getPessoa()+"')");
antes tinha criado a classe Contas.java que seria esse Main q esta dentro do MenuFrame.java, mas ao q me parece não consegue enxergar o query1.
Estou fazendo errado… deve ser de outra forma??? Ah o problema foi depois q começei a mexer com GUI. se puderem me ajudar agradeço…
depois de corrigido criei o main separado:
[code]/** @author 203070 */
package Main;
import domain.Cadastro;
import BD.MysqlQuery;
import BD.MysqlBD;
import javax.swing.JFrame;
public class Contas {
public static void main (String[] args){
MysqlBD banco = new MysqlBD(“jdbc:mysql://localhost/contaspessoais?user=root&password=”);
banco.connect(); //conecta ao banco
MysqlQuery query1 = new MysqlQuery(banco.conn);
Cadastro cadastro = new Cadastro();
MenuFrame menuFrame = new MenuFrame(query1); // cria MenuFrame
menuFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menuFrame.setSize(500, 200); //configura o tamanho do frame
menuFrame.setVisible(true); // exibe o frame
}
}[/code]