Atualizando Sql Server pelo JAVA

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 =) !!!

http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String)

executeUpdate retorna um int, não um ResultSet.

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í.