Como gravo + que 1 registro no Mysql?

6 respostas
leandrosu

Pessoal estou com problema ao inserir mais que um registro no mysql

segue o codigo

try
                 
                 { 
  		Class.forName("com.mysql.jdbc.Driver"); 
  		Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/java", "root", "jackie");

                JOptionPane.showMessageDialog(this, "Usuario \t" + jTFNome.getText()+ "\t inserido com sucesso!");
                 Statement st = con.createStatement();
                 String nome = jTFNome.getText();
                 String sobre = jTFSobre.getText();
                 String stat = ("INSERT INTO usuarios (nome, sobre) VALUES ('"+ jTFNome.getText() + jTFSobre.getText() +"')");
              
  // String stat = ("INSERT INTO usuarios (nome) VALUES ('"+ jTFNome.getText() +"')");
               
  st.executeUpdate(stat);
  		 st.close(); 
  		 con.close(); 
  		 }catch (Exception e){ 
        	 e.printStackTrace();
  		 }

o erro q ele me retorna e o seguinte:

java.sql.SQLException: Column count doesnt match value count at row 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)

at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)

at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1316)

at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1235)

at banco.InserirDados.jButton1ActionPerformed(InserirDados.java:92)

at banco.InserirDados.access$000(InserirDados.java:12)

at banco.InserirDados$1.actionPerformed(InserirDados.java:34)

Como resolvo isso ?
desde ja grato
[] abraços leandrosu

6 Respostas

fmeyer

cuidado com as aspas

String stat = (“INSERT INTO usuarios (nome, sobre) VALUES (’”+ jTFNome.getText() +"’,’"+ jTFSobre.getText() +"’)");

leandrosu

fmeyer

cara… valeu mesmo …
testei aqui e funfo bele…

valeu …
grande abraço

andre_a_s

Cara… usa o PreparedStatement ao invéz do Statement.
Com o PreparedStatement vc consegue parametrizar sua query sem precisar fazer essas concatenações propícias a esse tipo de erro q vc teve :wink:

L

andre_a_s:
Cara… usa o PreparedStatement ao invéz do Statement.
Com o PreparedStatement vc consegue parametrizar sua query sem precisar fazer essas concatenações propícias a esse tipo de erro q vc teve ;)

poderia dar algum exemplo, dessas parametrizações que vc citou? pois realmente essas concatenação são um “ass”…

andre_a_s

String nome, senha; String sql = "INSERT INTO USUARIOS (NOME, SENHA) VALUES (?, ?)"; Connection c; PreparedStatement ps = c.prepareStatement(sql); ps.setString(1, nome); ps.setString(2, senha); ps.execute();

:wink:

leandrosu

andre_a_s

valeu mesmo cara…

vo da uma testada nessa forma ai …
com o exemplo ficou mais claro …
concerteza vai diminuir mtos erros de '" …
uauahauh

abraço cara…
valeu mesmo

Criado 19 de dezembro de 2006
Ultima resposta 20 de dez. de 2006
Respostas 6
Participantes 4