Banco de Dados

6 respostas
Abdon
Pessoal, preciso de mais ajuda com Banco de Dados x Java... Imaginem o codigo:
import java.sql.*;

class Abdon1{
	//Informações para a conexão
	private final static String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
	private final static String url = "jdbc:odbc:AGENDA";
	
	private final static String username ="";
	private final static String password ="";
	
	//Ambiente para conexão
	private Connection con;
	private Statement stmt;
	private ResultSet rs;
	
	//Definição de dados
	private String nome = null;
	private String telefone = null;
	
	//Abrir Banco de Dados
	public void openDB(){
		
		try{
			Class.forName(driver);
			
			con = DriverManager.getConnection(url, username, password);
			stmt = con.createStatement();
			
			System.out.println("Conexao estabelecida com sucesso ");
			
		}//end try
		
		catch(ClassNotFoundException e){
			System.out.println("Erro ao carregar JDBC/ODBC pois: "+e);
			System.exit(1);
		
		}//end catch
		
		catch(SQLException e){
			System.out.println("Nao foi possivel estabelicer conexao pois: "+e);
		
		}//end catch
	}//end openDB
	
	public void setNome(String a){
		nome = a;
	}//end setNome
	
		public void setTelefone(String b){
		telefone = b;
	}//end setTelefone
	
	//Metodo que grava os dados no Banco de dados
	public void gravaDados(){
				
		System.out.println(nome);
		
		String query = "INSERT INTO AGENDA(NOME, TELEFONE) VALUES ("+nome+","+telefone+")";
		
		try{
			System.out.println("Inserindo dados...");
						
			stmt.executeUpdate(query);
		
		}//end try
		
		catch(SQLException e){
			System.out.println("Erro ao inserir dados pois: "+e);
		}//end catch
		
	}//end gravaDados
		
	
	public static void main(String args[]){
		Abdon1 a = new Abdon1();
		a.openDB();
		a.nome="Ovelha";
		a.telefone="1111111";
		a.gravaDados();
		
	}//end main
	
}//end class Jbd

A saida deste codigo é exatamente esta:
Conexao estabelecida com sucesso
Ovelha
Inserindo dados...
Erro ao inserir dados pois: java.sql.SQLExecpition: [Microsoft] [Driver ODBC para Microsoft Access] Parametros insuficientes. Eram esperados 1.

Lembrando que é um BD do access chamado AGENDA e que tem duas colunas na tabela: NOME e TELEFONE respectivamente....
O que vcs acham que pode ser?

Já agradecendo Abdon

6 Respostas

wbsouza

os campos do tipo String devem ser delimitados por aspas simples.

[]s, Welington B. Souza

caiofilipini

“Abdon”:
A saida deste codigo é exatamente esta:
Conexao estabelecida com sucesso
Ovelha
Inserindo dados…
Erro ao inserir dados pois: java.sql.SQLExecpition: [Micro$oft] [Driver ODBC para Micro$oft Access] Parametros insuficientes. Eram esperados 1.

Normalmente esse erro (Parâmetros insuficientes. Eram esperados 1) acontece quando você tenta inserir dados em um campo que não existe.

[]'s

wbsouza

se o problema for a delimitação da string, vc deve fazer a seguinte correção:

String query = "INSERT INTO AGENDA(NOME, TELEFONE) VALUES ('" + nome + "', '" + telefone +"')";

E

Estude a classe PreparedStatement que permite que essas regras de SQL que mudam de banco para banco, como aspas, fiquem a cargo dos drivers.
8)

wbsouza

Concordo plenamente com o EddiE

J
PreparedStatement pstmt = null;

String query = "INSERT INTO AGENDA(NOME, TELEFONE) VALUES ('?','?')";

pstmt = con.prepareStatement(query);
pstmt.setString(1, nome);
pstmt.setString(2, telefone);

pstmt.executeUpdate();

tente fazer isso, use o preparedStatement, ele permite a execução de parametros e fica muito mais facil de gerenciar a query …

ex:

1° ? = nome, 2° ? = telefone e assim vai, use quanto ? precisar e depois vá indexando ele …

abraço

Criado 12 de setembro de 2003
Ultima resposta 22 de jul. de 2008
Respostas 6
Participantes 5