Estou tentando conectar ao mysql enviando parâmetros via método main.
Tenho que usar essa mesma aplicação em vários locais (bancos/usuários diferentes) e essa foi a única forma razoável que encontrei (baseado no meu pouco conhecimento em java).
Esses dias um colega aqui do fórum me ajudou num problema parecido.
Tenho três classes:
FormaPgto.java
package br.com.formaspagamento;
import java.awt.*;
import java.awt.event.*;
import java.text.NumberFormat;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.util.List;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class FormaPgto extends javax.swing.JFrame {
public String servidor;
public String nome_banco;
public String nome_usuario;
public String senha_banco;
FormaPgto variaveis;
DefaultTableModel tmFormaPgtos = new DefaultTableModel(null, new String[]{"Código","Tipo","Descrição"});
ListSelectionModel lsmFormaPgtos;
List<FormaPgtoBean> formaPgtos;
public FormaPgto() {
initComponents();
}
// inicio do código gerado pelo netbeans
private void initComponents() {
//...código, código, código, ...
//deixei a chamada desse método, pode ajudar na resolução do problema
//listar formas de pagamento ao iniciar janela
listarFormaPgtos();
//...código, código, código, ...
}// fim do código gerado pelo netbeans
public static void main(String args[]) {
FormaPgto variaveis = new FormaPgto();
variaveis.servidor = "localhost";
variaveis.nome_banco = "database";
variaveis.nome_usuario = "root";
variaveis.senha_banco = "";
//vou receber os parâmetros assim:
//variaveis.servidor = args[0];
//variaveis.nome_banco = args[1];
//variaveis.nome_usuario = args[2];
//variaveis.senha_banco = args[3];
}
}
FormaPgtoControl.java
package br.com.formaspagamento;
import br.com.acessobd.AcessoMySql;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class FormaPgtoControl {
PreparedStatement pstm;
ResultSet rs;
String consultaFormaPgto = "SELECT * FROM formas_pagamento WHERE descricao LIKE ? ORDER BY ID ASC";
String cadastraFormaPgto = "INSERT INTO formas_pagamento (TIPO, DESCONTO, DESCRICAO, " +
"TX_ADMINISTRACAO, ENTRADA, PERC_MIN_ENTRADA, NUM_PARCELAS, INTERVALO_PARC, " +
"DIAS_PRIM_VENC, TX_JURO) VALUES (?,?,?,?,?,?,?,?,?,?)";
String alteraFormaPgto = "UPDATE formas_pagamento SET TIPO = ?, DESCONTO = ?, " +
"DESCRICAO = ?, TX_ADMINISTRACAO = ?, ENTRADA = ?, PERC_MIN_ENTRADA = ?, " +
"NUM_PARCELAS = ?, INTERVALO_PARC = ?, DIAS_PRIM_VENC = ?, TX_JURO = ? " +
"WHERE ID = ?";
String excluiFormaPgto = "DELETE FROM formas_pagamento WHERE ID = ?";
//ESSAS VARIAVEIS EU QUERO RECEBER DO MÉTODO MAIN!!!!!!!!!!!!!
private String servidor = "localhost";
private String nomeBanco = "database";
private String usuario = "root";
private String senha = "";
public FormaPgtoControl(){
}
AcessoMySql bd = new AcessoMySql();
public void cadastrarFormaPgto(FormaPgtoBean forma_pgto){
try {
pstm = bd.conectar(servidor,nomeBanco,usuario,senha).prepareStatement(cadastraFormaPgto);
pstm.setString(1, forma_pgto.getTipo());
pstm.setInt(2, forma_pgto.getDesconto());
pstm.setString(3, forma_pgto.getDescricao());
pstm.setDouble(4, forma_pgto.getTx_administracao());
pstm.setInt(5, forma_pgto.getEntrada());
pstm.setDouble(6, forma_pgto.getPerc_min_entrada());
pstm.setInt(7, forma_pgto.getNum_parcelas());
pstm.setInt(8, forma_pgto.getIntervalo_parc());
pstm.setInt(9, forma_pgto.getDias_prim_venc());
pstm.setDouble(10, forma_pgto.getTx_juro());
pstm.executeUpdate();
bd.desconectar();
}catch(Exception e){
e.printStackTrace();
}
}
public List<FormaPgtoBean> listarFormaPgtos(String descricao){
List<FormaPgtoBean> formas_pgto = new ArrayList();
try {
pstm = bd.conectar(servidor,nomeBanco,usuario,senha).prepareStatement(consultaFormaPgto);
pstm.setString(1, descricao);
rs = pstm.executeQuery();
FormaPgtoBean fp;
while (rs.next()){
fp = new FormaPgtoBean();
fp.setId(rs.getInt("id"));
fp.setTipo(rs.getString("tipo"));
fp.setDesconto(rs.getInt("desconto"));
fp.setDescricao(rs.getString("descricao"));
fp.setTx_administracao(rs.getDouble("tx_administracao"));
fp.setEntrada(rs.getInt("entrada"));
fp.setPerc_min_entrada(rs.getDouble("perc_min_entrada"));
fp.setNum_parcelas(rs.getInt("num_parcelas"));
fp.setIntervalo_parc(rs.getInt("intervalo_parc"));
fp.setDias_prim_venc(rs.getInt("dias_prim_venc"));
fp.setTx_juro(rs.getDouble("tx_juro"));
formas_pgto.add(fp);
}
bd.desconectar();
}
catch (Exception e){
e.printStackTrace();
}
return formas_pgto;
}
public void alterarFormaPgto(FormaPgtoBean forma_pgto){
try {
pstm = bd.conectar(servidor,nomeBanco,usuario,senha).prepareStatement(alteraFormaPgto);
pstm.setString(1, forma_pgto.getTipo());
pstm.setInt(2, forma_pgto.getDesconto());
pstm.setString(3, forma_pgto.getDescricao());
pstm.setDouble(4, forma_pgto.getTx_administracao());
pstm.setInt(5, forma_pgto.getEntrada());
pstm.setDouble(6, forma_pgto.getPerc_min_entrada());
pstm.setInt(7, forma_pgto.getNum_parcelas());
pstm.setInt(8, forma_pgto.getIntervalo_parc());
pstm.setInt(9, forma_pgto.getDias_prim_venc());
pstm.setDouble(10, forma_pgto.getTx_juro());
pstm.setInt(11, forma_pgto.getId());
pstm.executeUpdate();
bd.desconectar();
} catch (Exception e){
e.printStackTrace();
}
}
public void excluirFormaPgto(int codigoFormaPgto){
try {
pstm = bd.conectar(servidor,nomeBanco,usuario,senha).prepareStatement(excluiFormaPgto);
pstm.setInt(1, codigoFormaPgto);
pstm.executeUpdate();
bd.desconectar();
}catch(Exception e){
e.printStackTrace();
}
}
}
AcessoMySql.java
package br.com.acessobd;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class AcessoMySql {
Connection con;
public AcessoMySql(){
}
public Connection conectar(String host, String database, String user, String pass){
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://"+host+"/"+database+"?user="+user+"&password="+pass+"");
} catch (ClassNotFoundException ex){
ex.printStackTrace();
System.out.println("Não foi possível encontrar o Driver");
} catch (SQLException ex){
ex.printStackTrace();
System.out.println("Não foi possível conectar ao banco!");
}
return con;
}
public void desconectar(){
try {
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
Quero executar dessa forma:
java -jar FormaPgto.jar localhost database root
Deve ter um monte de gambiarra ai, mas estou iniciando, qualquer ajuda é bem vinda!