[b]Bom dia galera, tudo bem? bom tô tendo o seguinte problema, tenho que entregar um trabalho da faculdade, não sacou muito de java, tenho que fazer um programa para inserir, buscar, atulizar, etc no banco de dados… só que ta dando erro odbc microsoft dizendo que esta faltando parametro… gostaria realmente da opinião de vcs. referente ao código abaixo sobre o que pode ser feito pra rodar. ele… obrigado o meu bando de dados é formando por id(chave primaria) - nome (String) e nota (double).
kleiton
:
import java.sql.;
import javax.swing.;
public class TrabalhoJava
{ Connection conn;
Statement stm;
ResultSet result;
String sql;
public void abreConexao()
{ try
{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:driver={Microsoft access driver (*.mdb)};dbq=d:/banco.mdb");
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void insereAluno(String nome,double nota)
{ abreConexao();
try
{ stm = conn.createStatement();
sql = "insert into alunos(nome,nota)values("+nome+","+nota+")";
stm.executeQuery(sql);
JOptionPane.showMessageDialog(null,"Dados inseridos com sucesso");
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void consultaAluno(String nome)
{ abreConexao();
try{
stm = conn.createStatement();
sql = "select * from alunos where nome = 'nome'";
result = stm.executeQuery(sql);
JOptionPane.showMessageDialog(null,"Nome: "+result.getString("nome"));
JOptionPane.showMessageDialog(null,"Nota: "+result.getDouble("nota"));
JOptionPane.showMessageDialog(null,"Dados consultados");
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void excluirAluno(int id)
{ abreConexao();
try{
stm =conn.createStatement();
sql = "delete from alunos where id = 'id'";
stm.executeQuery(sql);
JOptionPane.showMessageDialog(null,"excluido com sucesso");
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void atualizarNome(int id,String nome)
{ abreConexao();
try{
stm = conn.createStatement();
sql = "update alunos set nome = 'nome' where id = 'id'";
stm.executeQuery(sql);
JOptionPane.showMessageDialog(null,"Nome atualizado com sucesso");
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void atualizarNota(int id,double nota)
{ abreConexao();
try{
stm = conn.createStatement();
sql = "update alunos set nota = 'nota' where id = 'id' ";
stm.executeQuery(sql);
JOptionPane.showMessageDialog(null,"Nota atualizada com sucesso");
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public static void main(String[] args)
{ TrabalhoJava controle = new TrabalhoJava();
int opcao,id;
double nota;
String nome,notaString,idString;
String opcaoString = JOptionPane.showInputDialog
("Escolha uma opção abaixo:\n1-Insere aluno e nota\n2-Consulta aluno\n3-Excluir aluno\n4-Atualizar nome\n5-Atualizar nota\n0-Sair");
opcao = Integer.parseInt(opcaoString);
switch(opcao)
{ case 1:
nome = JOptionPane.showInputDialog("Informe o Nome do aluno:");
notaString = JOptionPane.showInputDialog("Informe a Nota do aluno");
nota = Double.parseDouble(notaString);
controle.insereAluno(nome,nota);
break;
case 2:
nome = JOptionPane.showInputDialog("Informe o Nome do aluno:");
controle.consultaAluno(nome);
break;
case 3:
idString = JOptionPane.showInputDialog("Informe o id do aluno");
id = Integer.parseInt(idString);
controle.excluirAluno(id);
break;
case 4:
nome = JOptionPane.showInputDialog("Informe o Nome do aluno:");
idString = JOptionPane.showInputDialog("Informe o id do aluno");
id = Integer.parseInt(idString);
controle.atualizarNome(id,nome);
break;
case 5:
notaString = JOptionPane.showInputDialog("Informe a Nota do aluno");
nota = Double.parseDouble(notaString);
idString = JOptionPane.showInputDialog("Informe o id do aluno");
id = Integer.parseInt(idString);
controle.atualizarNota(id,nota);
break;
}
System.exit(0);
}
Você está dizendo que está faltando um parametro, sem a mensagem de erro fica dificil descobrir? onde fica este parametro? quando abre a conexão? Quando você consulta, quando insere! entendeu agora, posta a mensagem de erro ai.
kleiton-contato, não se esqueça de fechar as conexões que vc abre e liberar os recursos!!!
vc não está fechando nenhuma conexão e não está liberando os resultSets e os statements!! se isso vai ser executado poucas vezes vc nem repara… mas se esse código for executado muuuutias vezes… vai acabar sendo lançado exceptions e além disso irá consumir muitos recursos do banco!!
insira um metodo ae assim:
public static void fechaConexao () {
if (conn != null) {
conn.close();
conn = null;
}
}
public static void liberaRecurso () {
if (result != null) {
result.close();
result = null;
}
if (stm != null) {
stm.close();
stm = null;
}
}
Bom galera, acredito que o problema não é a base odbc, pois fiz varios teste referente a conexão com a base dados e ele consegue conectar, tô tendo problema é com essa variavel sql … que tô passando… alguém tem algum exemplo de programas que utilizar todos as funções tais como insert, select, update …
Bom consegui resolver o problema, tava dando erro na montagem das querys sql… bom segue abaixoo programa funcionando…
"import java.sql.;
import javax.swing.;
/*
*Alunos: Jose Kleiton
Carlos cesar sampaio
Trabalho de tópicos Especiais
*Este programa tem as funções:
-Incluir nome e nota de alunos;
-Buscar alunos através de nome;
-Excluir aluno através de seu respectivo id
-Atualizar o nome do aluno através de seu respectivo id
-Atualizar a nota do aluno através de seu respectivo id
-Sair do programa caso seja digitado 0(zero)
*/
public class TrabalhoJava
{ Connection conn;
PreparedStatement stm;
ResultSet result;
String sql;
public void abreConexao()
{ try
{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:driver={Microsoft access driver (*.mdb)};dbq=d:/banco.mdb");
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void fechaConexao()throws Exception
{ conn.close();
conn = null;
stm.close();
stm = null;
result = null;
}
public void insereAluno(String nome,double nota)
{ abreConexao();
try
{
sql = "insert into alunos(nome,nota)values(?,?)";
stm = conn.prepareStatement(sql);
stm.setString(1,nome);
stm.setDouble(2,nota);
stm.execute();
JOptionPane.showMessageDialog(null,"Dados inseridos com sucesso");
fechaConexao();
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void consultaAluno(String nome)
{ abreConexao();
try{
sql = "select * from alunos where nome =?";
stm = conn.prepareStatement(sql);
stm.setString(1,nome);
result = stm.executeQuery();
while(result.next())
{ JOptionPane.showMessageDialog(null,"Id: "+result.getInt("id")+" Nome: "+result.getString("nome")+" Nota:"+result.getDouble("nota"));
}
JOptionPane.showMessageDialog(null,"Fim da consulta");
fechaConexao();
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void excluirAluno(int id)
{ abreConexao();
try{
sql = "delete from alunos where id =?";
stm =conn.prepareStatement(sql);
stm.setInt(1,id);
stm.execute();
fechaConexao();
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void atualizarNome(int id,String nome)
{ abreConexao();
try{
sql = "update alunos set nome =? where id =?";
stm = conn.prepareStatement(sql);
stm.setString(1,nome);
stm.setInt(2,id);
stm.execute();
JOptionPane.showMessageDialog(null,"Nome atualizado com sucesso");
fechaConexao();
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public void atualizarNota(int id,double nota)
{ abreConexao();
try{
sql = "update alunos set nota =? where id =? ";
stm = conn.prepareStatement(sql);
stm.setDouble(1,nota);
stm.setInt(2,id);
stm.execute();
JOptionPane.showMessageDialog(null,"Nota atualizada com sucesso");
fechaConexao();
}
catch(Exception erro)
{ JOptionPane.showMessageDialog(null,erro.getMessage());
}
}
public static void main(String[] args)
{ TrabalhoJava controle = new TrabalhoJava();
int opcao,id;
double nota;
String nome,notaString,idString;
do
{ String opcaoString = JOptionPane.showInputDialog
("Escolha uma opção abaixo:\n1-Insere aluno e nota\n2-Consulta aluno\n3-Excluir aluno\n4-Atualizar nome\n5-Atualizar nota\n0-Sair");
opcao = Integer.parseInt(opcaoString);
switch(opcao)
{ case 1:
nome = JOptionPane.showInputDialog("Informe o Nome do aluno:");
notaString = JOptionPane.showInputDialog("Informe a Nota do aluno");
nota = Double.parseDouble(notaString);
controle.insereAluno(nome,nota);
break;
case 2:
nome = JOptionPane.showInputDialog("Informe o Nome do aluno:");
controle.consultaAluno(nome);
break;
case 3:
idString = JOptionPane.showInputDialog("Informe o id do aluno");
id = Integer.parseInt(idString);
controle.excluirAluno(id);
break;
case 4:
idString = JOptionPane.showInputDialog("Informe o id do aluno");
id = Integer.parseInt(idString);
nome = JOptionPane.showInputDialog("Informe o Nome do aluno:");
controle.atualizarNome(id,nome);
break;
case 5:
idString = JOptionPane.showInputDialog("Informe o id do aluno");
id = Integer.parseInt(idString);
notaString = JOptionPane.showInputDialog("Informe a Nota do aluno");
nota = Double.parseDouble(notaString);
controle.atualizarNota(id,nota);
break;
}
}
while(opcao != 0);
System.exit(0);
}