Olá Pessoal!!!
Estou desenvolvendo um programinha para capturar do Banco de Dados (postgreSQL) a data e o total de receitas por tipo (sus e particular) da farmacia onde sou o farmacêutico Responsável (isso mesmo!!! farmacêutico e programador java INICIANTE)!!! segue o código abaixo:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class EstatisticaDeReceitas {
final static String url = "jdbc:postgresql://192.168.0.2:5432/bancodedados";
final static String user = "user";
final static String senha = "senha";
static String sql;
static String opcao;
static Scanner sc;
public static void main(String[] args) {
System.out.println("Estatistica de Receitas");
System.out.println("1 - SUS");
System.out.println("2 - Particular");
System.out.println("3 - Total");
sc= new Scanner(System.in);
System.out.printf("Digite a Opção de Consulta: ");
opcao = sc.nextLine();
if(opcao =="1")
sql = "select distinct(dat_emissao), count(flg_receita) from cadcvend where" +
"dat_emissao beteween '2012-01-01' and '2012-01-31' and flg_receita='1' and flg_excluido is null" +
"group by dat_emissao order by dat_emissao";
else if(opcao =="2")
sql = "select distinct(dat_emissao), count(flg_receita) from cadcvend where" +
"dat_emissao beteween '2012-01-01' and '2012-01-31' and flg_receita='2' and flg_excluido is null" +
"group by dat_emissao order by dat_emissao";
else if(opcao =="3")
sql = "select distinct(dat_emissao), count(flg_receita) from cadcvend where" +
"dat_emissao beteween '2012-01-01' and '2012-01-31' and flg_receita is not null and flg_excluido is null" +
"group by dat_emissao order by dat_emissao";
else
System.out.println("Opção Digitada Inválida");
try {
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection(url, user, senha);
Statement stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stm.executeQuery(sql);
if(rs.first()){
System.out.println("Receitas SUS");
System.out.println("Receitas Particulares");
System.out.println("Total de Receitas");
System.out.println("Data\tQuantidade");
System.out.println(rs.getString("dat_emissao\tflg_receita"));
}else{
System.out.println("Não Foi possivel localizar os dados");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
porém, independente da opção digitada (1, 2 ou 3) ocorre o seguinte erro:
Estatistica de Receitas
1 - SUS
2 - Particular
3 - Total
Digite a Opção de Consulta: 1
[b]Opção Digitada Inválida[/b]
Exception in thread "main" java.lang.NullPointerException
at org.postgresql.jdbc2.AbstractJdbc2Statement.replaceProcessing(AbstractJdbc2Statement.java:800)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
at EstatisticaDeReceitas.main(EstatisticaDeReceitas.java:53)
sendo que as mesmas consultas feitas diretamente no banco de dados retorna o que eu realmente quero, ou seja, as datas e o total de cada tipo de receita. Não sei se tem alguma coisa a ver com System.out.println(rs.getString("dat_emissao\tflg_receita"));
onde utilizo o \t para tabular os resultados. Aguardo ansioso por uma solução para o meu problema.