Ajuda no dao de consulta no projeto

25 respostas
java
A

package br.com.projeto.dados;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.util.ArrayList;

import br.com.projeto.entidades.Consulta;
import br.com.projeto.entidades.Paciente;

public class DaoConsulta {
private File arquivo;

public DaoConsulta() {
	arquivo = new File("consultas.data");
}

public void escreverArquivo(ArrayList<Consulta> paciente) throws IOException {
	FileOutputStream fos = new FileOutputStream(arquivo);
	ObjectOutputStream oos = new ObjectOutputStream(fos);

	oos.writeObject(paciente);

	oos.close();
	fos.close();
}

public ArrayList<T> lerArquivo() throws IOException, ClassNotFoundException {
	ArrayList<Consulta> paciente = null;

	if(!arquivo.exists()) {
		arquivo.createNewFile();
		paciente = new ArrayList<>();
	} else {
		FileInputStream fis = new FileInputStream(arquivo);
		ObjectInputStream ois = new ObjectInputStream(fis);

		paciente = (ArrayList<Consulta>) ois.readObject();

		ois.close();
		fis.close();
	}

	return  (ArrayList<T>) paciente;
}


public void gravaArquivos(){
	File file = new File("ListaConsulta.txt");
	String nome = ""; 
	String conteudo;
	try	{
		FileWriter f = new FileWriter (file, true);
		ArrayList<Consulta> consulta;
		for(int i = 0; i < consulta.size(); i++){
			nome = (consulta.get(i)); 
			conteudo = nome;
			conteudo += "\r\n";
			f.write(conteudo);
		}
		f.close();
	}catch (IOException e)  {
		e.printStackTrace();
	}catch (ParseException e) {
		e.printStackTrace();  
	}
}

}

está dando erro somente no gravar arquivo, me ajudem nisso por favor como posso sanar o erro do gravar arquivo

25 Respostas

Rodrigo_Void

Se dá erro posta stacktrace.

A

Capturar10

Rodrigo_Void

nome é do tipo String.
consulta é uma LISTA de Consulta.
N pode atribuir uma Consulta a uma String INCOMPATÍVEL

A

Como devo ajeitar esse método para sanar o erro?

Rodrigo_Void

Bom, eu n sei da lógica do seu código nem oq vc quer fazer, então perguntando pra mim a resposta é tira a linha q n terá o erro. rsrs

A
em relação ao meu código esse gravar arquivos é pra poder gravar os arquivos do arraylist de consultas,  que os atributos de marcar uma consulta seja:

private String nomePaciente;

private String nomeMedico;

private String data;

private String hora;

private ArrayList consulta;
Rodrigo_Void

Vo tentar adivinhar então, tenta ai:
consulta.get(i).getNomePaciente()

A

Capturar11
está assim agora tentei importar sobre o parseException não funcionou e fica dando erro em outras linhas.

Rodrigo_Void

Não velho, mantem o nome
nome = consulta.get(i).getNomePaciente()

A

Capturar12
Pronto e o erro do Parse Exception ? Já que o import não funciona e dá erro em outras linhas

Rodrigo_Void

Depende doq ele ta reclamando ali, tmq ler.
Remove o catch e ve oq dá.

A

Capturar13
Ficou assim

Rodrigo_Void

Não.
Vc precisa conhecer o básico da sintaxe ou n vai conseguir fazer nada.

A

eu tento mexer no código mas não tô tendo sucesso, o pior que tem vários erros nesse projeto.

javaflex

Está seguindo qual material pra aprender?

A

caelum

javaflex

Se ficou pulando algo, melhor voltar pro início. Ou pelo menos revise a parte sobre exception. Mas como você está perdido na sintaxe como o colega falou, melhor revisar desde o início.

A

Pra ser exato não assimilei bem algumas coisas em relação a serialização

F

Opa a sua IDE está reclamando de um erro checado, coloque o mouse em cima do “x” vermelho no lado esquerdo e verá a descrição do erro.

Tem um erro no teu try catch, essa estrutura serve para tratar erros no código, deve estudar sobre isso para continuar o seu programa, aprenda o básico depois tende tirar as dúvidas, sem o básico nem dúvidas da para tirar.

A

O que eu entendi bem sobre o try e catch é que o try a gente põe um código de risco, algo que possa gerar uma exceção, no catch a gente pode tratar essa exceção, se o bloco try executar seus comandos perfeitamente o bloco catch não é chamado. Não consegui aplicar ainda isso no meu projeto.

LuanFroehlich
  • troca o nome do arquivo para apenas Lista.txt
  • Muda de IOException para Exception
  • Coloca o System.out.print depois do printStackTrace
  • Apague as outras duas linhas
  • mande executar
  • Vai ocorrer um erro e ele será impresso no Console

image

Assim você pode ter uma ideia de como aplicar o try-catch.
Quais mais duvidas vc tem?

A

Minha dúvida no momento é:
consulta pode receber null nesse código, fica dando erro e pede sempre o null porque fica dependendo do null?
Capturar14

LuanFroehlich

A variável nome é string.
O código consulta.get(i) vai te retornar um OBJETO do tipo Consulta.
Talvez você esteja querendo pegar o nome da consulta,então, na teoria, teria uma função getNome().

Exemplo:
nome = consulta.get(i).getNome();

Fazendo isso, você pode apagar o trecho catch (ParseException e) { e.printStackTrace(); }

Vê se isso te ajuda…

LuanFroehlich

Aqui você esta querendo percorrer a lista consulta.
A lista consulta somente foi declarada na linha 60, não foi preenchida.
Imagine que você pediu pro Java criar uma caixa, mas colocou nada dentro dessa caixa.
A caixa então esta vazia.
Se você tentar procurar alguma coisa dentro dessa caixa, vai encontrar nada, justamente pq ela ainda esta vazia.
E é isso que o java ta querendo te dizer na linha 61.
“Olha, você ta querendo procurar alguma coisa dentro de uma caixa vazia, tem certeza disso?”

Entendeu o que você precisa fazer?

javaflex

Só aplique quando for necessário, usar try catch sem objetivo concreto não faz sentido.

Criado 21 de junho de 2018
Ultima resposta 22 de jun. de 2018
Respostas 25
Participantes 5