Caixa eletrônico

12 respostas
A

Alguém ja teria o esquema pronto, com acesso ao banco de dados do Access, eu fiz mas o esquema de acesso ao banco esta dando problema…

O enunciado é o seguinte

Codificar um aplicativo em Java que simule o funcionamento de um caixa eletrônico. A interface do aplicativo fica a critério de cada grupo. As funções presentes no caixa são:

Saque;

Depósito;

Saldo;

Empréstimo;

Abrir uma nova conta;

Todas as operações são realizadas com base no número da conta e na senha do cliente que devem ser digitados através do teclado (do aplicativo). Ao realizar um saque, o cliente digita o valor a ser sacado e este é retirado de sua conta. Se o valor do saque ultrapassar o limite permitido para o cliente, a operação não poderá ser realizada. Para o depósito, o cliente informa quanto será depositado e este valor é adicionado ao saldo. Para a opção saldo, deverá ser exibido para o usuário o valor atual em sua conta. O empréstimo permitido para cada cliente é de no máximo 2 vezes o valor do seu limite. O Cliente poderá pagar este empréstimo em até 4 parcelas com um juro de 8% ao mês. Assim que for realizado o empréstimo, o valor das parcelas deverá ser exibido ao cliente.

Quando um cliente chega ao caixa, este também poderá abrir uma conta diretamente. Para isso devem ser informados o nome do cliente, endereço, RG e CIC. Para cada novo cliente é informado o número de sua conta (valor numérico inteiro com 5 dígitos) e o limite para saque. Cada cliente deverá cadastrar uma senha com quatro dígitos para poder realizar as operações.

Todas as informações cadastradas devem ser armazenadas em um banco de dados e o aplicativo “Caixa eletrônico” deverá acessar essas informações.

12 Respostas

Rafael_Steil

Qual o problema que voce esta tendo com o “banco”?

Rafael

A

Ele me retorna um erro dizendo que eram esperados 9 parametros e eu estou passando os 9 parametros para a inserção.

este é o método para a inserção
Connection conexao;
	
	public boolean bancoAutor(String rgtext,String cpftext,String contanumtext,float lim,String senhatext,float sald,float empres,String nometext,String enderecotext,int verifica)
	{
		
		JTable tabela;
		String url = "jdbc:odbc:cliente";//driver que serão manipulado pela conexão
		String login = "Java";
		String senha = "java";
		
		//carrega o drive para permitir conexão ao banco de dados
		try {
			Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );

			conexao = DriverManager.getConnection( url, login, senha );

		}
		catch( ClassNotFoundException ref )
		{
			System.err.println( "Falha ao carregar o driver JDBC/ODBC" );
			System.exit( 1 );
		}

		catch( SQLException sq )
		{
			System.err.println( "Impossível conectar" );
		}

		criarTabela(verifica);
		return true;
	}
		public void criarTabela(int verificacao)
		{
			Statement st;
			ResultSet resultado;
			if(verificacao==0){
				try {
					st = conexao.createStatement();
					String insere = "INSERT INTO cliente(rg, cic, numeroconta, limite, senha, saldo, emprestimo, nome, endereco) VALUES (rgtext, cpftext, contanumtext, lim, senhatext, sald, empres, nometext, enderecotext)"; //inserir
					st.executeQuery( insere );
					
					String consulta = "SELECT * FROM cliente";

					resultado = st.executeQuery( consulta );
					mostraResultado( resultado );
					st.close();
				}
				catch( SQLException sq )
				{
					sq.printStackTrace();
				}
			}
		}
	public void mostraResultado( ResultSet rs ) throws SQLException
	{
		//posiciona no primeiro registro dos resultados obtidos
		boolean reg = rs.next();

		//verifica se há registros a serem exibidos
		if( !reg )
		{
			JOptionPane.showMessageDialog( this, "Não  mais registros" );
			setTitle( "Não  registros para serem exibidos" );
			return;
		}
	}
	public void fechar()
	{
		try {
			conexao.close();
		}
		catch( SQLException sq )
		{
			System.err.println( "Impossivel desconectar" );
		}
		fechar();
	}
_fs

Os VALUES por serem strings, não teriam que estar entre aspas simples?

Rafael_Steil

Cara, usa um PreparedStatement que vc vai parar de ter a maior parte desses problemas. Tem um tutorial aqui no guj sobre o assunto. Acho que eh o de separar codigo sql do codigo java.

Rafael

A

Como funcionaria o esquema do preparedstatement ?

E as aspas simples são necessárias apenas qdo vc esta passando o dado na real e não as informações deles .

pcalcado

Heim? Perdi alguma coisa?

Acho que era:

String insere = "INSERT INTO cliente(rg, cic, numeroconta, limite, senha, saldo, emprestimo, nome, endereco) VALUES ('rgtext', 'cpftext', 'contanumtext', 'lim', 'senhatext', 'sald', 'empres', 'nometext', 'enderecotext')";

Ou ainda:

String insere = "INSERT INTO cliente(rg, cic, numeroconta, limite, senha, saldo, emprestimo, nome, endereco) VALUES ('"+rgtext+"','"+cpftext+"','"+contanumtext+"','"+lim+"','"+senhatext+"','"+sald+"','"+empres+"','"+nometext+"','"+enderecotext+"')";

não :?: :?: :?:

[]s

pcalcado

Sobre Prepared Statement:

Artigo do GUJ

API

[]s

A

Pessoal valew pela ajuda, mas agora estou recebendo a mensaghem de que nenhum resultado foi produzido.

Ai vai o código
Connection conexao;
	
	public boolean bancoAutor(String rgtext,String cpftext,String contanumtext,String lim,String senhatext,String sald,String empres,String nometext,String enderecotext,int verifica)
	{
		
		JTable tabela;
		String url = "jdbc:odbc:cliente";//driver que será manipulado pela conexão
		String login = "Java";
		String senha = "java";
		
		//carrega o drive para permitir conexão ao banco de dados
		try {
			Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );

			conexao = DriverManager.getConnection( url, login, senha );

		}
		catch( ClassNotFoundException ref )
		{
			System.err.println( "Falha ao carregar o driver JDBC/ODBC" );
			System.exit( 1 );
		}

		catch( SQLException sq )
		{
			System.err.println( "Impossível conectar" );
		}

		criarTabela(verifica);
		return true;
	}
		public void criarTabela(int verificacao)
		{
			Statement st;
			ResultSet resultado;
			if(verificacao==0){//0 cadastra
				try {
					st = conexao.createStatement();
					String insere = "INSERT INTO cliente(rg, cic, numeroconta, limite, senha, saldo, emprestimo, nome, endereco) VALUES ('rgtext', 'cpftext', 'contanumtext', 'lim', 'senhatext','sald', 'empres', 'nometext', 'enderecotext')"; //inserir
					st.executeQuery( insere );
					
					String consulta = "SELECT * FROM cliente";

					resultado = st.executeQuery( consulta );
					mostraResultado( resultado );
					st.close();
				}
				catch( SQLException sq )
				{
					sq.printStackTrace();
				}
			}
		}
	public void mostraResultado( ResultSet rs ) throws SQLException
	{
		//posiciona no primeiro registro dos resultados obtidos
		boolean reg = rs.next();

		//verifica se há registros a serem exibidos
		if( !reg )
		{
			JOptionPane.showMessageDialog( this, "Não  mais registros" );
			setTitle( "Não  registros para serem exibidos" );
			return;
		}
	}
	public void fechar()
	{
		try {
			conexao.close();
		}
		catch( SQLException sq )
		{
			System.err.println( "Impossivel desconectar" );
		}
		fechar();
	}
	
}
Rafael_Steil

vc vez o insert errado… ao inves de

st.executeQuery( insere );

vc tem q fazer

st.executeUpdate( insere );

qdo eh INSERT, DELETE ou UPDATE, vc tem que usar o executeUpdate.

Rafael

A

Brigadão pela ajuda, mas agora to recebendo um Erro Geral, quando cadastro pela 2ª vez.

E o outro problema é que quando uso aspas simples ele joga a string la…ao invés do conteudo dela, como faço para ele passar o conteudo dela?

pcalcado

Você não pdoe ter dois registros com a mesma chave primária

“zopo”:

E o outro problema é que quando uso aspas simples ele joga a string la…ao invés do conteudo dela, como faço para ele passar o conteudo dela?

Utilize o segundo jeito que mostrei.

Bom, você precisa dar uma estudada em Java, Banco de Dados Relacionais e SQL antes de codificar :wink:

[]s

A

Cara eu te adoro (na melhor das intenções), ta tudo funcionando valewwwwwwwwwwwwww :smiley: :smiley: :smiley:

Criado 3 de maio de 2004
Ultima resposta 3 de mai. de 2004
Respostas 12
Participantes 4