Banco de Dados

Pessoal, preciso de mais ajuda com Banco de Dados x Java…
Imaginem o codigo:

[code]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
[/code]

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

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

[]s, Welington B. Souza

[quote=“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.[/quote]

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

[]'s

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 +"')";

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)

Concordo plenamente com o EddiE

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