Pessoal é o seguinte:
eu estou fazendo um sistema em que tem um cadastro de materiais…
eu fiz uma classe para gravar, alterar etc… do banco de dados…
eu faço o botão, parece que dá tudo certo, mas não grava…
Aqui está a linha da classe chamada sqlMateriais:
[code]
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
/*
- sqlMateriais.java
- Created on 27 de Julho de 2006, 09:43
- To change this template, choose Tools | Template Manager
- and open the template in the editor.
*/
/**
*
-
@author maq14
*/
public class sqlMateriais {/** Creates a new instance of sqlMateriais */
public sqlMateriais() {
}public static PreparedStatement stmt;
public static Statement stm;
public static Connection con;
public static ResultSet rs;
public static int codigo;
public static String descricao;
public static String quantidade;
public static String valor;public static void setCodigo(int aCodigo){
codigo = aCodigo;
}public static int getCodigo(){
return codigo;
}public static void setDescricao(String aDescricao){
descricao = aDescricao;
}public static String getDescricao(){
return descricao;
}public static void setQuantidade(String aQuantidade){
quantidade = aQuantidade;
}public static String getQuantidade(){
return quantidade;
}public static void setValor(String aValor){
valor = aValor;
}public static String getValor(){
return valor;
}public static String conecta(){
try{
Class.forName("org.gjt.mm.mysql.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/provapaulo", "alunos", "alunos");
} catch (Exception e){
System.out.println(e);
}
return null;
}public static String desconecta(){
try{
con.close();
stmt.close();
} catch (Exception e){
System.out.println(e);
}
return null;
}public static String gravarMateriais(String gdescricao, String gquantidade, String gvalor){
conecta();
try{
stmt = con.prepareStatement("INSERT INTO Materiais (Descricao, Quantidade, Valor) VALUES (0,?,?,?)");
stmt.setString(1, gdescricao);
stmt.setString(2, gquantidade);
stmt.setString(3, gvalor);
stmt.executeUpdate();
stmt.execute("COMMIT");
} catch(Exception e){
System.out.println(e);
}
desconecta();
return null;
}public static String consultarMateriais(int codigo){
conecta();
try{
stm = con.createStatement();
String SQL = "SELECT * FROM Materiais WHERE Codigo="+codigo;
rs = stm.executeQuery(SQL);
if(rs.next()){
setDescricao(String.valueOf(rs.getObject("Descricao")));
setQuantidade(String.valueOf(rs.getObject("Quantidade")));
setValor(String.valueOf(rs.getObject("Valor")));
}
} catch (Exception e){
System.out.println(e);
}
desconecta();
return null;
}public static String alterarMateriais(int codigo, String descricao, String quantidade, String valor){
conecta();
try{
stm = con.createStatement();
String SQL= “UPDATE Materiais SET Descricao=’”+descricao+"’, Quantidade=’"+quantidade+"’, Valor=’"+valor+"'WHERE Codigo="+codigo;
stm.executeUpdate(SQL);
stmt.execute(“COMMIT”);
} catch (Exception e){
System.out.println(e);
}
desconecta();
return null;
}
}[/code]
Aparentemente está tudo certo: Nome do banco, senha… tudo…
Agora vai a linha de comando que faz gravar as informações no banco de dados:
private void bGravarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
materiais.gravarMateriais(tfDescricao.getText(), tfQtd.getText(), tfValor.getText());
}
Eu instanciei o objeto assim:
sqlMateriais materiais = new sqlMateriais();
Quando eu execute ele dá a seguinte mensagem:
java.sql.SQLException: Column count doesn’t match value count at row 1
O que será que eu estou fazendo de errado???
Obrigado[/code]