OI gente, estou na empresa onde faço estagio e fiz um programinha em vb mas n to conseguindo fazer em java.
Eu preciso atualizar uns dados do BD
Uso o seguinte código :
[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Agenda_Campanha {
public static void main(String[] args) {
int dia = 1;
String semana_1 = "D S T Q Q S S";
String semana_2 = "S T Q Q S S D";
String semana_3 = "T Q Q S S S D";
String semana_4 = "Q Q S S D S T";
String semana_5 = "Q S S D S T Q";
String semana_6 = "S S D S T Q Q";
String semana_7 = "S D S T Q Q S";
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:jtds:sqlserver://WA-TI05:1433;namedPipe=true", "sa",
"");
System.out.println("Conectado");
Statement stm = con.createStatement();
String SQL = "INSERT INTO FELLIPE2 (NOME) VALUES ('alguem');";
ResultSet rs = stm.executeUpdate(SQL);
while (rs.next()) {
String tit = rs.getString("NOME");
System.out.println(tit);
}
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
[/code]
SEI QUE TEM ALGO ERRADO MAS NAO CONSIGO RESOLVER, É ALGO NO ResultSet rs = stm.executeUpdate(SQL);
SEI QUE O ExecuteQuery é apenas pra dar SELECT, os outros é usado o executeUpdate, mas quando uso isso da um erro justamente nessa linha:
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from int to ResultSet
at Agenda_Campanha.main(Agenda_Campanha.java:29)
sera que alguem pode me dizer como q uso o executeUpdate sem dar nenhum erro !!!
OBS: O codigo esta com varias coisas que eu não usei, pois ainda não terminei o programa =) !!!
Troque o executeUpate por executeQuery.
E de preferencia ao PreparedStatement ao invés do statement.
[quote=lazaropj]Troque o executeUpate por executeQuery.
E de preferencia ao PreparedStatement ao invés do statement.[/quote]
Mas não faz sentido usar executeQuery para um insert - tem de usar executeUpdate.
Mas é bom aprender a usar PreparedStatement, que ajuda a evitar vários problemas.
[quote=entanglement][quote=lazaropj]Troque o executeUpate por executeQuery.
E de preferencia ao PreparedStatement ao invés do statement.[/quote]
Mas não faz sentido usar executeQuery para um insert - tem de usar executeUpdate.
Mas é bom aprender a usar PreparedStatement, que ajuda a evitar vários problemas. [/quote]
Mas ele quer como retorno um Result Set…
e o executeQuery retorna isso pra ele!!
EU FIZ O QUE DISSERAM, AGORA APARESENTA UM ERRO NESSA LINHA:
PreparedStatement stm = con.createPreparedStatement();
ERRO : Exception in thread “main” java.lang.Error: Unresolved compilation problem:
The method createPreparedStatement() is undefined for the type Connection
at Agenda_Campanha.main(Agenda_Campanha.java:26)
[quote=lazaropj][quote=entanglement][quote=lazaropj]Troque o executeUpate por executeQuery.
E de preferencia ao PreparedStatement ao invés do statement.[/quote]
Mas não faz sentido usar executeQuery para um insert - tem de usar executeUpdate.
Mas é bom aprender a usar PreparedStatement, que ajuda a evitar vários problemas. [/quote]
Mas ele quer como retorno um Result Set…
e o executeQuery retorna isso pra ele!![/quote]
Sei.
Você quer tirar leite de vaca de um jacaré, certo?
É isso que faz o insert.
Ele não retorna nada, só o número de linhas que foram afetadas pelo insert.
O insert não é uma consulta do tipo “retorne todos os elementos inseridos”.
E é por isso que não devemos forçar a amizade e usar um executeQuery só porque queremos tirar leite de vaca de um jacaré.
PELO Q TINHA LIDO COMO SO VOU INSERIR AS COISAS TERIA Q SER executeUpdate ne
O CODIGO TA ASSIM AGORA :
[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Agenda_Campanha {
public static void main(String[] args) {
int dia = 1;
String semana_1 = "D S T Q Q S S";
String semana_2 = "S T Q Q S S D";
String semana_3 = "T Q Q S S S D";
String semana_4 = "Q Q S S D S T";
String semana_5 = "Q S S D S T Q";
String semana_6 = "S S D S T Q Q";
String semana_7 = "S D S T Q Q S";
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:jtds:sqlserver://WA-TI05:1433;namedPipe=true", "sa",
"");
System.out.println("Conectado");
PreparedStatement stm = con.createPreparedStatement();
String SQL = "INSERT INTO FELLIPE2 (NOME) VALUES ('alguem');";
ResultSet rs = stm.executeUpdate(SQL);
while (rs.next()) {
String tit = rs.getString("NOME");
System.out.println(tit);
}
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}[/code]
APRESENTANDO O SEGUINTE ERRO :
Exception in thread “main” java.lang.Error: Unresolved compilation problems:
The method createPreparedStatement() is undefined for the type Connection
Type mismatch: cannot convert from int to ResultSet
at Agenda_Campanha.main(Agenda_Campanha.java:26)
É ALGO COM O RESULT SET, MAS COMO SO INICIANTE EM JAVA, NÃO SEI O Q PODE TA ACONTECENDO
PreparedStatement pstmt = conn.prepareStatement("insert into FELLIPE2 values (?)");
pstmt.setString(1,"Alguem");
int linhasAfetadas = pstmt.executeUpdate();
System.out.println("Linhas afetadas: " +linhasAfetadas );
Tente assim e pare de tirar leite de vaca do jacaré.
VLW LAZARO, FUNCIONO AQUI, MUITO OBG !!!
Assim… não use conexão na mesma classe q vc está fazer o insert…
O certo é vc criar essa conexão em outra classe e apenas fazer a chamada para conectar aí nessa classe.
Você conhece o padrão MVC?
Vc conhece as apostilas free da caelum?
Coloque [RESOLVIDO] no titulo do post aí.