Ola pessoal sei q tem bastante material sobre isso mas procurei o erro e n encontrei....
eu tenho uma classe conexao q gera a conexao!!!
/*
* Conexao.java
*
* Created on 18 de Setembro de 2007, 16:04
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package ####;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import javax.swing.JOptionPane;
/**
*
* @author homisinho
*/
public class Conexao {
public Connection conn;
public String mensagem;
public boolean status;
public String banco,user,senha,servidor;
public int porta;
public String caminho;
/** Creates a new instance of Conexao */
public void cararquivo(){
caminho = new File(".").getAbsolutePath();
try{
FileReader reader = new FileReader(caminho+"conexao.cew");
BufferedReader leitor = new BufferedReader(reader);
banco = leitor.readLine();
user = leitor.readLine();
senha = leitor.readLine();
servidor = leitor.readLine();
porta = Integer.parseInt(leitor.readLine());
leitor.close();
reader.close();
}
catch (IOException e) {
mensagem = "Não pode abrir o arquivo de configuração do BD.";
JOptionPane.showMessageDialog(null,"Não pode abrir o arquivo de configuração do BD.\n("+e.toString()+")","PROBLEMAS",JOptionPane.ERROR_MESSAGE);
}
}
public Conexao() {
////carrega todas as variaveis do arquivo para conectar o BD...
cararquivo();
///////////////
try {
//Registrando o driver:
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch(Exception ex){
mensagem = "Driver de BD não carregado. ";
status=false;
JOptionPane.showMessageDialog(null,"Problemas ao carregar o Driver do BD.\n("+ex.toString()+")","PROBLEMAS",JOptionPane.ERROR_MESSAGE);
}
try{
//Estabelecendo a conexão através do ODBC criado no Painel de Controle:
Connection conn = DriverManager.getConnection("jdbc:mysql://"+servidor+":"+porta+"/"+banco,user,senha);
status=true;
} catch(Exception e) {
mensagem = "Problemas ao conectar o banco de dados. ";
status=false;
JOptionPane.showMessageDialog(null,"Problemas ao conectar o banco de dados.\n("+e.toString()+")","PROBLEMAS",JOptionPane.ERROR_MESSAGE);
}
}
public Connection getConexao() {
return conn;
}
public void disconnect(){
//Fechando a conexão:
try{
conn.close();
status=false;
} catch(Exception e) {
mensagem = "Problemas ao encerrar conexão. ";
JOptionPane.showMessageDialog(null,"Problemas ao encerrar conexão.\n("+e.toString()+")","PROBLEMAS",JOptionPane.ERROR_MESSAGE);
}
}
}
tenho tbm uma classe q gera o meu Statement e implementei alguns metodos q serão mais usados...
/*
* Query.java
*
* Created on 19 de Setembro de 2007, 09:15
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package ####;
import java.sql.*;
/**
*
* @author homisinho
*/
public class Query {
//Declarando as variáveis publicas
public Connection Database = null;
public boolean status;
public ResultSet rs;
public Statement stm;
private boolean statusreg =true;
// fim da declaração
/** Creates a new instance of Query */
public Query(Connection Db) {
try {
Database=Db;
stm = Database.createStatement();
status = false;
} catch(SQLException e) {
e.printStackTrace();
System.out.print("Erro ao criar Query!");
}
}
public void open(String sql) {
try {
rs= stm.executeQuery(sql);
status = true;
} catch(SQLException e) {
status = false;
System.out.print("Erro ao executar Query!");
e.printStackTrace();
}
}
public void execute(String sql) {
try {
stm.execute(sql);
status = true;
} catch(SQLException e) {
status = false;
System.out.print("Erro ao executar Query!");
e.printStackTrace();
}
}
public void close() {
try {
stm.close();
} catch(SQLException e) {
status = false;
System.out.print("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("Field invalido!");
}
return value;
}
public int recordcount(){
int tot=0;
try {
rs.first();
do {
tot++;
} while(rs.next());
} catch(SQLException e) {
status = false;
System.out.print("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.print("Erro ao executar Query!");
}
return retorno;
}
public boolean prev(){
boolean retorno=false;
try {
if(rs.previous()){retorno=true;}
} catch(SQLException e) {
System.out.print("Erro ao executar previous!");
}
return retorno;
}
public boolean first(){
boolean retorno=false;
try {
if(rs.first()){retorno=true;}
} catch(SQLException e) {
System.out.print("Erro ao executar first!");
}
return retorno;
}
public boolean last(){
boolean retorno=false;
try {
if(rs.last()){retorno=true;}
} catch(SQLException e) {
System.out.print("Erro ao executar last!");
}
return retorno;
}
}
e na classe principal estou criando uma conexao e criando uma query...
Conexao BD = new Conexao();
///cria uma query
Query Query1 = new Query(BD.getConexao());
//Executando SQL:
try{
Query1.open("SELECT * FROM ####");
Query1.last();
//Adquirindo através de um objeto ResulSet, os registros retornados pela SQL:
String teste = Query1.fieldbyname("DEMANDAPONTA");
String teste2 = Query1.fieldbyname("DEMANDAFPONTA");
//Fechando a conexão:
Query1.close();
BD.disconnect();
}
catch (Exception e){
####
}
esta me retornando o seguinte erro"Exception in thread "main" java.lang.NullPointerException"
sei q na realidade o meu metodo BD.getConexao() esta retornando null.....
mas pq???
as minhas funções estao corretas????
e a forma correta de fazer isso?
to meio enrolado com OO...... :oops: