Inserir Dados em varias DATABASES

3 respostas
L

Oi Boa Tarde !!

Eu tenho um programa em que tem que inserir 3 comandos sql na Database SCC, e outros 3 comandos na Database SCC2.

Meu código está assim:

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());
		
		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();

		}

	}
}

quando compilo, ele aparece um erro, gostaria de saber como resolvo esse erro e se for erro de que ele n encontra a tabela, como faço pra indicar em qual database ele deve inserir esses comandos ?

Obs: tem mais comandos sql para serem inseridos no programa, estes que estão no codigo q enviei são para a Database SCC2

Obrigado pela atenção

3 Respostas

MarcioCasteloBranco

Boa tarde vc poderia postar erros ?
Obrigado

L

aqui esta o erro :

Conectado ao SQL com sucesso !!!

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:30)
Marcio_Lima

Na linha 17, para hoje, 24 de julho, resultará:

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

        // da => "24/07/2012"

e, na linha 27, resultará:

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

            // => "SELECT * INTO TBD_PESTALOZZI_FILA_ENVIO_24/07/2012_BKP FROM TBD_PESTALOZZI_FILA_ENVIO"

Ou seja, o nome da tabela contém caracteres não padronizados (barras);
Se o nome é esse mesmo (com barras), será necessário incluí-lo entre aspas.

Criado 23 de julho de 2012
Ultima resposta 24 de jul. de 2012
Respostas 3
Participantes 3