Oi Bom Dia
sou iniciante em java e gostaria de tirar mais uma dúvida !!
Eu tenho o seguinte código:
[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Agenda_Campanha {
public static void main(String[] args) {
int dia = 01;
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 pstmt = con
.prepareStatement("UPDATE TBD_DIAS_SEMANA SET DIA_SEMANA = 'S T Q Q S S D' WHERE SEMANA = 6");
int linhasAfetadas = pstmt.executeUpdate();
System.out.println("Linhas afetadas: " + linhasAfetadas);
pstmt = con
.prepareStatement("UPDATE TBD_DIAS_SEMANA SET DIA_SEMANA = '01 02 03 04 05 06 07' WHERE SEMANA = 1");
pstmt.executeUpdate();
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
[/code]
o código roda 100% e faz tudo que eu peço, mas eu quero torna-lo melhor.
nos campos :
UPDATE TBD_DIAS_SEMANA SET DIA_SEMANA = 'S T Q Q S S D' WHERE SEMANA = 6
UPDATE TBD_DIAS_SEMANA SET DIA_SEMANA = '01 02 03 04 05 06 07' WHERE SEMANA = 1
eu gostaria de ao invez de ter que digitar os dias e as siglas da semana, gostaria de colocar uma variavel para receber isso, mas como eu faço pra o comando slq receber não o nome da variavel mas sim o conteudo dela ??
Você está usando preparedStatement, logo, pode usar coringas, cuja ordem permite substituir o mesmo, pelo valor de uma variável.
Por exemplo:
//Isso
pstmt = con
.prepareStatement("UPDATE TBD_DIAS_SEMANA SET DIA_SEMANA = 'S T Q Q S S D' WHERE SEMANA = 6");
//Pode ser assim
pstmt = con.prepareStatement("UPDATE TBD_DIAS_SEMANA SET DIA_SEMANA = ? WHERE SEMANA = ?";
String semana = "S T Q Q S S D";
Integer numSemana = 6;
pstmt.setString(1, semana);
pstmt.setInt(2, numSemana);
pstmt.execute();
Lembrando que, ao contrário de muitas coisas em java, o primeiro valor dos sets do preparedStatement é 1 e não 0.
MODIFIQUEI O CODIGO DO GEITO Q FALOU E TAMBEM MUDEI OUTRAS COISAS
O CODIGO FICOU ASSIM:
[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Agenda_Campanha {
public static void main(String[] args) {
String dia_semana = "01 02 03 04 05 06 07";
//String dia_semana = "08 09 10 11 12 13 14";
//String dia_semana = "15 16 17 18 19 20 21";
//String dia_semana = "22 23 24 25 26 27 28";
//String dia_semana = "29 30 31";
String ref_semana = "01";
//String ref_semana = "02";
//String ref_semana = "03";
//String ref_semana = "04";
//String ref_semana = "05";
//String ref_semana = "06";
String semana = "D S T Q Q S S";
//String semana = "S T Q Q S S D";
//String semana = "T Q Q S S S D";
//String semana = "Q Q S S D S T";
//String semana = "Q S S D S T Q";
//String semana = "S S D S T Q Q";
//String semana = "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 pstmt = con
.prepareStatement("UPDATE TBD_DIAS_SEMANA SET DIA_SEMANA = ? WHERE SEMANA = ?");
pstmt.setString(1, dia_semana);
pstmt.setString(2, ref_semana);
pstmt.execute();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}[/code]
FUNCIONOU DIREITINHO, VLW AI PELA FORÇA !!!