Não consigo inserir dados no bd ECLIPSE

11 respostas
M

Não consigo inserir dados no bd em no eclipse da error na linha de comando stmt.execute();
Alguem poderia mim ajudar... segue - -se abaixo o codigo fonte
[code]import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;

//import de pacotes
public class JDBCInseri {

/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {

try { //conexão ao BD
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/cadastro","root","");
System.out.println("Conectado ao BD!!!");//menssagem se esta conectado ou não
PreparedStatement stmt = con.prepareStatement("insert into ficha(nome,email,endereco) value (?,?,?)"); //inserção de dados na tabela
//preenche os valores na tabela
stmt.setString(1, "marcelo souza");
stmt.setString(1, "[email removido]");
stmt.setString(1, "av marechal rondon, 431 blc14 apt004 ");
//executa o comando acima e fecha o TBLS
[color=red] stmt.execute(); //linha que ta da no ERROR[/color]
stmt.close();
System.out.println("Operação Realizado Com Sucesso!!!"); //menssagem depois da operação gravado com sucesso
con.close();//fecha o BD
} catch (ClassNotFoundException e){
e.printStackTrace();

} catch (SQLException e){
e.printStackTrace();
}

}
}

11 Respostas

ajfilho

Amigo poste seu código entre . Fica mais fácil para entender.

Abraços!

wbdsjunior
marcelodysouza:
Não consigo inserir dados no bd em no eclipse da error na linha de comando stmt.execute(); Alguem poderia mim ajudar... segue - -se abaixo o codigo fonte
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;

//import de pacotes
public class JDBCInseri {

	/**
	 * @param args
	 * @throws ClassNotFoundException 
	 */
	public static void main(String[] args) throws ClassNotFoundException {
		
		try { //conexão ao BD
			Class.forName("com.mysql.jdbc.Driver");
			Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/cadastro","root","");
            System.out.println("Conectado ao BD!!!");//menssagem se esta conectado ou não 
            PreparedStatement stmt = con.prepareStatement("insert into ficha(nome,email,endereco) value (?,?,?)"); //inserção de dados na tabela
		    //preenche os valores na tabela  
               stmt.setString(1, "marcelo souza");
		       stmt.setString(1, "[email removido]");
		       stmt.setString(1, "av marechal rondon, 431 blc14 apt004 ");
		     			//executa o comando acima e fecha o TBLS
              [color=red] [b]stmt.execute();[/b] //linha que ta da no ERROR[/color]
		      stmt.close();
		       System.out.println("Operação Realizado Com Sucesso!!!"); //menssagem depois da operação gravado com sucesso
               con.close();//fecha o BD
		} catch (ClassNotFoundException e){
		      e.printStackTrace();
     	
		} catch (SQLException e){
			e.printStackTrace();
		}
			
		}
	}

a ordem dos parametros do PreparedStatement está errada.

tente:

stmt.setString(0, "marcelo souza"); 
stmt.setString(1, "[email removido]"); 
stmt.setString(2, "av marechal rondon, 431 blc14 apt004 ");
abraço...
T

Veja se é isso.

stmt.setString(1, "marcelo souza");
stmt.setString(2, "[email removido]");
stmt.setString(3, "av marechal rondon, 431 blc14 apt004 ");

Mas inclui o erro que está apresentando que fica mais fácil, e lembrando entre <code></code>

jurunaloco

poste o erro

jurunaloco

mas vc tb nao está setando os parametros igual o amigo ali falou

M

Olha Só que error esta mostrando no console por mais que modifiquei o stmt 1 2 3

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'email' at row 1
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2983)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)
	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:882)
	at JDBCInseri.main(JDBCInseri.java:25)
fernandorsl

bem eu acredito que vc criou a coluna email com o tamanho limitado demais para o tamanho da informacao que vc quer inserir… manda o codigo do script de criacao da tabela.

M
CREATE TABLE ficha (
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome VARCHAR(20) NULL,
  email VARCHAR(20) NULL,
  endereco VARCHAR(45) NULL,
  PRIMARY KEY(id)
);
M
CREATE TABLE ficha (

id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

nome VARCHAR(20) NULL,

email VARCHAR(20) NULL,

endereco VARCHAR(45) NULL,

PRIMARY KEY(id)

);
ajfilho
stmt.setString(1, "[email removido]");

[email removido] = 25 caracteres;

No teu script = varchar2(20);

Altera tua tabela e coloca um tamanho maior para o campo e-mail!

Abraços!

M

OK deu certo muito obrigado pela força…

Criado 5 de dezembro de 2008
Ultima resposta 5 de dez. de 2008
Respostas 11
Participantes 6