Conectando em DB Diferentes

1 resposta
L

OI, Bom dia !!

Estou com o seguinte código:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;

public class Agregados_Vitalicios {

	public static void main(String[] args) {

		Date d = new Date();
		Calendar c = Calendar.getInstance();
		c.setTime(d);

		DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
		String da = df.format(c.getTime());

		System.out.println(da);

		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("SELECT * INTO TBD_PESTALOZZI_FILA_ENVIO_?_BKP FROM TBD_PESTALOZZI_FILA_ENVIO");
			pstmt.setString(1, da);
			pstmt.execute();
			
			con.prepareStatement("select * INTO TMP_AGREG26012012_PESTALOZZI from tscc_produtos_vendidos where num_quantidade_meses_agregado = 0 and txt_status_venda = 'ATIVO' And NUM_VALOR_AGREGADO Is Not Null And DAT_VENDA_AGREGADO <= ' ? 00:00:00' AND NUM_QUANTIDADE_FATURADA_AGREGADO <> 0");
			pstmt.setString(1, da);
			pstmt.execute();

			con.prepareStatement("UPDATE tscc_produtos_vendidos SET NUM_VALOR_MENSAL = NUM_VALOR_MENSAL + NUM_VALOR_AGREGADO num_quantidade_meses_agregado = NUM_QUANTIDADE_FATURADA_AGREGADO where num_quantidade_meses_agregado = 0 and txt_status_venda = 'ATIVO' AND NUM_VALOR_AGREGADO IS NOT NULL AND DAT_VENDA_AGREGADO <= ' ? 00:00:00' AND NUM_QUANTIDADE_FATURADA_AGREGADO <> 0");
			pstmt.setString(1, da);
			pstmt.execute();

			con.close();

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();

		}

	}
}

Apresenta o seguinte erro:

java.sql.SQLException: Line 1: Incorrect syntax near '@P0'.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)
at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:584)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:546)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.execute(JtdsPreparedStatement.java:558)
at Agregados_Vitalicios.main(Agregados_Vitalicios.java:32)

Minha dúvida é a seguinte:

Não sei se esse erro é porque ele não acha a tabela que eu pus no código ou escrevi algo errado talvez nas linhas onde add o ponto de interrogação para substituir por 1 variavel chamada "da" que armazena a data que o programa foi rodado!!!

E tambem gostaria de saber 1 coisa:

Abrindo o SQL Server 2000 pelo Enterprise Manager tenho varias Databases essa primeira parte do código que tem 3 comandos pro sql diferentes, quero que seja colocado em uma tabela da Database A, e tem 3 comandos em sql que ainda vo inserir no codigo que devera ser colocado na Database B, gostaria de saber como que eu escolho em qual Database irá esse código !!!

Esse código que eu pus ele esta indicado pra ser inserido na Database chamada master, eu quero q seja adicionado na Database chamada SCC!!!

Obrigado pela atenção !!!

1 Resposta

D
PreparedStatement pstmt = con.prepareStatement("SELECT * INTO TBD_PESTALOZZI_FILA_ENVIO_?_BKP FROM TBD_PESTALOZZI_FILA_ENVIO");  
            pstmt.setString(1, da);  
            pstmt.execute();

cara eu vou tentar um chute aqui, tenta algo assim:

String backup = "TBD_PESTALOZZI_FILA_ENVIO_"+da+"_BKP";
PreparedStatement pstmt = con.prepareStatement("SELECT * INTO ? FROM TBD_PESTALOZZI_FILA_ENVIO");  
            pstmt.setString(1, backup );  
            pstmt.execute();
Criado 23 de julho de 2012
Ultima resposta 23 de jul. de 2012
Respostas 1
Participantes 2