[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package controlbus.BD;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
import controlbus.Bean.UsuarioBean;
/**
*
-
@author Vagner Duarte
*/
public class InserirUsuario {
PreparedStatement pstm;
ResultSet rs;
String gravarusuario = “INSERT INTO (LOGIN, SENHA, NIVEL_ACESSO) VALUES (?,?,?)”;
public void CadastrarUsuario(UsuarioBean usuario){
try{
ConectarMysql con = new ConectarMysql();
pstm = con.Conectar().prepareStatement(gravarusuario);
pstm.setString(1, usuario.getLogin());
pstm.setString(2, usuario.getSenha());
pstm.setInt(3,usuario.getAcesso());
pstm = (PreparedStatement) con.Conectar().prepareStatement(gravarusuario);
pstm.executeUpdate();
// System.out.println(gravarusuario);
// System.out.println(usuario.getAcesso());
}
catch(Exception e){
e.printStackTrace();
}
}
}[/code]
Pessoal tenho a classe acima, mais esta acontecendo o seguinte erro:
incompatible types na seguinte linha:
pstm = con.Conectar().prepareStatement(gravarusuario);
Alguem pode me ajudar a resolver este erro???
O problema deve estar no seu método Conectar() que não deve estar retornando um objeto Connection.
[quote=vagner.analista][code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package controlbus.BD;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
import controlbus.Bean.UsuarioBean;
/**
*
-
@author Vagner Duarte
*/
public class InserirUsuario {
PreparedStatement pstm;
ResultSet rs;
String gravarusuario = “INSERT INTO (LOGIN, SENHA, NIVEL_ACESSO) VALUES (?,?,?)”;
public void CadastrarUsuario(UsuarioBean usuario){
try{
ConectarMysql con = new ConectarMysql();
pstm = con.Conectar().prepareStatement(gravarusuario);
pstm.setString(1, usuario.getLogin());
pstm.setString(2, usuario.getSenha());
pstm.setInt(3,usuario.getAcesso());
pstm = (PreparedStatement) con.Conectar().prepareStatement(gravarusuario);
pstm.executeUpdate();
// System.out.println(gravarusuario);
// System.out.println(usuario.getAcesso());
}
catch(Exception e){
e.printStackTrace();
}
}
}[/code]
Pessoal tenho a classe acima, mais esta acontecendo o seguinte erro:
incompatible types na seguinte linha:
pstm = con.Conectar().prepareStatement(gravarusuario);
Alguem pode me ajudar a resolver este erro???[/quote]
Vagner,
acho que se eu fosse vc eu trocava isso:
import com.mysql.jdbc.PreparedStatement;
por isso:
import java.sql.PreparedStatement;
Pois dessa maneira que você está fazendo, vc seria obrigado a fazer um (cast), assim no teu código:
pstm = (PreparedStatement) con.Conectar().prepareStatement(gravarusuario);
ou
java.mysql.PreparedStatement pstm = con.Conectar().prepareStatement(gravarusuario);
Só que acho muito feio se vc pode já de cara e com poucas linhas pode minimizar todo esse código.
O negócio é não complicar, java foi feito pra não complicar.
E é só isso, qualquer coisa, grita ou posta!!! rsrsrs
[]'s.
Diego Marinho o problema era esse mesmo, troquei como vc disse e deu certo, mas agora tem outro problema, o pstm não esta setando os valores nas ?, então quando eu mando imprimir como esta ficando o final fica assim:
INSERT INTO (LOGIN, SENHA, NIVEL_ACESSO) VALUES ?,?,?
Alguém sabe porque não esta substituindo os ? pelos valores que tem que ser setados???
[quote=vagner.analista]Diego Marinho o problema era esse mesmo, troquei como vc disse e deu certo, mas agora tem outro problema, o pstm não esta setando os valores nas ?, então quando eu mando imprimir como esta ficando o final fica assim:
INSERT INTO (LOGIN, SENHA, NIVEL_ACESSO) VALUES ?,?,?
Alguém sabe porque não esta substituindo os ? pelos valores que tem que ser setados???[/quote]
Vagner,
você já pensou em colocar o nome da tabela depois do “INSERT INTO [table_name] (LOGIN,…”.
acho que assim o programa vai fazer a associação necessária.
Se não for isso, verifique o erro que causa ao final do procedimento da instrução.
Só prestar um pouco mais de atenção Vagner!
[]'s.
vagner.analista
a substituição das ? pelos valores é feito internamente, ou seja, mesmo vc dando um System.out.println na sua query,ela não mostrará os valores substituidos.
O que importa é se está funcionando.
Ainda está acusando algum erro? Se sim: Qual? Onde?
Opa.
Acabei de ver seu erro.
Primeiro você faz a conexão e seta os valores usando esse código aqui:
pstm = con.Conectar().prepareStatement(gravarusuario);
pstm.setString(1, usuario.getLogin());
pstm.setString(2, usuario.getSenha());
pstm.setInt(3,usuario.getAcesso());
e logo após, antes de você executar o Update, você está refazendo a conexão, ou seja, zerando os valores que ali estavam já setados:
pstm = (PreparedStatement) con.Conectar().prepareStatement(gravarusuario);
pstm.executeUpdate();
Daí quando ele vai fazer o update, não existem valores setados no preparedStatement(gravarusuario)
Espero que resolva seu problema. Abraço
[code]public void CadastrarUsuario(UsuarioBean usuario){
try{
ConectarMysql con = new ConectarMysql();
String gravarusuario = “INSERT INTO TB_LOGIN(LOGIN, SENHA, NIVEL_ACESSO) VALUES (?,?,?)”;
//String gravarusuario = “INSERT INTO tb_login (login, senha, nivel_acesso)VALUES(”+usuario.getLogin()+","+usuario.getSenha()+
// “,”+usuario.getAcesso()+")";
pstm = con.Conectar().prepareStatement(gravarusuario);
pstm.setString(1, usuario.getLogin());
pstm.setString(2, usuario.getSenha());
pstm.setInt(3,usuario.getAcesso());
pstm.executeQuery();
}[/code]
a.moraissoares desculpe se estou dando trabalho, mas a minha classe acima esta fazendo tudo certo, pelo menos ao meu ver e não consigo ver onde esta o erro, quando eu executo veja a Exception que esta dando:
run:
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.Statement.checkForDml(Statement.java:417)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1383)
at controlbus.BD.InserirUsuario.CadastrarUsuario(InserirUsuario.java:34)
at controlbus.Funcoes.Usuario.PegarDadosUsuario(Usuario.java:266)
at controlbus.Funcoes.Usuario.bt_gravarActionPerformed(Usuario.java:235)
at controlbus.Funcoes.Usuario.access$200(Usuario.java:22)
at controlbus.Funcoes.Usuario$3.actionPerformed(Usuario.java:107)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6216)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5981)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 10 segundos)