Null Pointer Exception
Fala galera.
Não sei mais o que fazer no código.
Estou tentando enviar para um banco de dados as informações passadas pelo usuário.
Essa informações seriam:
Filia; Nome Completoç; Endereco e Cidade.
Depois tentaria traze-las de volta do banco.
Quando executo a JVM indica a exceção:
O código é esse:
Se alguém já passou por esse problema ou sabe como posso resolve-lo me ajude!
Não sei mais o que fazer no código.
Estou tentando enviar para um banco de dados as informações passadas pelo usuário.
Essa informações seriam:
Filia; Nome Completoç; Endereco e Cidade.
Depois tentaria traze-las de volta do banco.
Quando executo a JVM indica a exceção:
Exception in thread "main" java.lang.NullPointerException
at br.com.IgrejaViva.CadastraMembro.insert(CadastraMembro.java:60)
at br.com.IgrejaViva.CadastraMembro.main(CadastraMembro.java:14)
at br.com.IgrejaViva.CadastraMembro.insert(CadastraMembro.java:60)
at br.com.IgrejaViva.CadastraMembro.main(CadastraMembro.java:14)
O código é esse:
package br.com.IgrejaViva;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Scanner;
public class CadastraMembro{
public static void main(String[] args) throws SQLException {
insert();
select();
}
public static void insert() throws SQLException{
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
Membro membro = new Membro();
ConnectionDB con = new ConnectionDB();
System.out.println("Bem vindo ao sistema de cadastros");
System.out.println("Digite 1 para sair !");
int op = 0;
while (op != 1) {
System.out.println("Digite a Filial do Membro");
membro.setFilial(scanner.nextLine());
System.out.println("Digite o Nome completo");
membro.setNome(scanner.nextLine());
System.out.println("Digite o Endereço");
membro.setEndereco(scanner.nextLine());
System.out.println("Digite o Cidade");
membro.setCidade(scanner.nextLine());
if (op >= 2) {
System.out.println("Digite apenas o numero 1 para sair");
}
else op = scanner.nextInt();
}
PreparedStatement query = con.prepareStatement("INSERT INTO Membro (filial, nomecompleto, endereco, cidade) VALUES (?, ?, ?, ?)");
query.setString(1, membro.getFilial()); // onde a JVM interrompe a execução
query.setString(2, membro.getNome());
query.setString(3, membro.getEndereco());
query.setString(4, membro.getCidade());
query.executeQuery();
}
public static ArrayList<Membro> select() throws SQLException{
ConnectionDB con = new ConnectionDB();
ArrayList<Membro> listaDeMembros = new ArrayList<Membro>();
Membro membro = new Membro();
PreparedStatement query2 = con.prepareStatement("SELECT * from Membro");
ResultSet resultados = query2.executeQuery();
while (resultados.next()) {
listaDeMembros.add(membro);
membro.setFilial(resultados.getString("filial"));
membro.setNome(resultados.getString("nomecompleto"));
membro.setEndereco(resultados.getString("endereco"));
membro.setCidade(resultados.getString("cidade"));
}
return listaDeMembros;
}
}Se alguém já passou por esse problema ou sabe como posso resolve-lo me ajude!
Andre Teixeira
Curtidas 0
Respostas
André Camargo
01/03/2014
Não entendi muito o que tu quer fazer, mas pergunto o seguinte? Quais são os campos do teu banco?. e Tem um erro de lógica no teu código ele pode ler 20 "pessoas" e vai salvar sempre só a ultima, se for essa ideia esquece o erro.
GOSTEI 0
Andre Teixeira
01/03/2014
Não entendi muito o que tu quer fazer, mas pergunto o seguinte? Quais são os campos do teu banco?. e Tem um erro de lógica no teu código ele pode ler 20 "pessoas" e vai salvar sempre só a ultima, se for essa ideia esquece o erro.
Eu estou usando o MS SQL Server Express.
Os campos no banco de dados são exatamente os que estão na linha 52, dentro do INSERT.
Eu entendo que há esse erro de lógica.
A minha intensão é fazer o insert no banco, testando essa conexão.
GOSTEI 0
André Camargo
01/03/2014
ok, tu está selecionando a base corretamente? no teu arquivo que inicia a conexão.
GOSTEI 0
Andre Teixeira
01/03/2014
ok, tu está selecionando a base corretamente? no teu arquivo que inicia a conexão.
Dá uma olhada no código de conexão.
package br.com.IgrejaViva;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ConnectionDB {
private static String URL ="jdbc:microsoft:sqlserver://localhost;databaseName=Congresso;";
private static String usuario = "ANDRETEIXEIRA";
private static String password = "q1w2e3";
private static String DRIVER ="com.microsoft.sqlserver.jdbc.SQLServerDriver";
public static Connection abreConexao() throws SQLException{
try {
Class.forName(DRIVER);
Connection con = DriverManager.getConnection(URL, usuario, password);
return con;
} catch (ClassNotFoundException e) {
throw new SQLException(e.getMessage());
}
}
public PreparedStatement prepareStatement(String string) {
// TODO Auto-generated method stub
return null;
}
}Eu descobri que não estava executando o abreConexao() na main.
Mas mesmo depois de fazer o java continua me retornando a exceção do driver do sqlserver.
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=Congresso;
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at br.com.IgrejaViva.ConnectionDB.abreConexao(ConnectionDB.java:20)
at br.com.IgrejaViva.CadastraMembro.insert(CadastraMembro.java:26)
at br.com.IgrejaViva.CadastraMembro.main(CadastraMembro.java:14)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at br.com.IgrejaViva.ConnectionDB.abreConexao(ConnectionDB.java:20)
at br.com.IgrejaViva.CadastraMembro.insert(CadastraMembro.java:26)
at br.com.IgrejaViva.CadastraMembro.main(CadastraMembro.java:14)
Já verifiquei várias vezes a build path e o jar do driver sqlserver.
Mesmo assim o java joga a exceção.
GOSTEI 0
André Camargo
01/03/2014
ok, tu está selecionando a base corretamente? no teu arquivo que inicia a conexão.
Dá uma olhada no código de conexão.
package br.com.IgrejaViva;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ConnectionDB {
private static String URL ="jdbc:microsoft:sqlserver://localhost;databaseName=Congresso;";
private static String usuario = "ANDRETEIXEIRA";
private static String password = "q1w2e3";
private static String DRIVER ="com.microsoft.sqlserver.jdbc.SQLServerDriver";
public static Connection abreConexao() throws SQLException{
try {
Class.forName(DRIVER);
Connection con = DriverManager.getConnection(URL, usuario, password);
return con;
} catch (ClassNotFoundException e) {
throw new SQLException(e.getMessage());
}
}
public PreparedStatement prepareStatement(String string) {
// TODO Auto-generated method stub
return null;
}
}Eu descobri que não estava executando o abreConexao() na main.
Mas mesmo depois de fazer o java continua me retornando a exceção do driver do sqlserver.
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=Congresso;
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at br.com.IgrejaViva.ConnectionDB.abreConexao(ConnectionDB.java:20)
at br.com.IgrejaViva.CadastraMembro.insert(CadastraMembro.java:26)
at br.com.IgrejaViva.CadastraMembro.main(CadastraMembro.java:14)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at br.com.IgrejaViva.ConnectionDB.abreConexao(ConnectionDB.java:20)
at br.com.IgrejaViva.CadastraMembro.insert(CadastraMembro.java:26)
at br.com.IgrejaViva.CadastraMembro.main(CadastraMembro.java:14)
Já verifiquei várias vezes a build path e o jar do driver sqlserver.
Mesmo assim o java joga a exceção.
Assim, tu já adicionou a biblioteca do banco?
GOSTEI 0
Andre Teixeira
01/03/2014
Então, como eu posso fazer essa importação?
Onde encontro a biblioteca?
Onde encontro a biblioteca?
GOSTEI 0
André Camargo
01/03/2014
Qual ide tu esta utilizando, deve clicar no projeto e mandar adicionar biblioteca. e escolher o jdbc correto.
GOSTEI 0
Andre Teixeira
01/03/2014
Eu to usando eclipse.
Se for ao .jar do sqlserver driver que está se referindo, eu já fiz o procedimento de importação desse driver.
Inclusive apagando o jar e refazendo o build path.
Se for ao .jar do sqlserver driver que está se referindo, eu já fiz o procedimento de importação desse driver.
Inclusive apagando o jar e refazendo o build path.
GOSTEI 0
André Camargo
01/03/2014
Verifica em qual porta esta rodando o teu banco?
GOSTEI 0
André Camargo
01/03/2014
private static String URL ="jdbc:sqlserver://localhost:1433;databaseName=teste;";
Testa com a porta. ve se o banco está rodando.
GOSTEI 0
Andre Teixeira
01/03/2014
private static String URL ="jdbc:sqlserver://localhost:1433;databaseName=teste;";
Testa com a porta. ve se o banco está rodando.
Boa noite amigo.
Eu verifiquei na minha URL que tinha um 'microsoft' sobrando.
Mas agora o erro que ocorre é esse:
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at br.com.IgrejaViva.ConnectionDB.abreConexao(ConnectionDB.java:20)
at br.com.IgrejaViva.CadastraMembro.insert(CadastraMembro.java:61)
at br.com.IgrejaViva.CadastraMembro.main(CadastraMembro.java:14)
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at br.com.IgrejaViva.ConnectionDB.abreConexao(ConnectionDB.java:20)
at br.com.IgrejaViva.CadastraMembro.insert(CadastraMembro.java:61)
at br.com.IgrejaViva.CadastraMembro.main(CadastraMembro.java:14)
Já configurei firewall, sql managment studio mas nada funcionou.
GOSTEI 0
André Camargo
01/03/2014
Pela mensagem está dizendo que está bloqueado no seu firewall o acesso. Assim, o banco está na própria maquina., se tiver como postar a foto do seu firewall que está liberado e do seu gerenciador do banco pra mim dar uma olhada.
GOSTEI 0