Problema JAVA + SQL

13 respostas
L

Bom dia !!!

Ja que esse forum esta me tirando todas as duvidas sobre java e agradeço muito por isso, to dinovo aqui pra pedir mais uma ajudinha se possivel!!!

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.Format;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Agregados_Vitalicios {

	public static void main(String[] args) {

		Calendar agora = Calendar.getInstance();
		Format formato = new SimpleDateFormat("ddMMyyyy");
		String da = formato.format(agora.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.close();

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

		}

	}
}

esta apresentando o seguinte error:

Conectado
java.sql.SQLException: Invalid parameter index 1.
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.getParameter(JtdsPreparedStatement.java:340)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setParameter(JtdsPreparedStatement.java:409)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setString(JtdsPreparedStatement.java:689)
at Agregados_Vitalicios.main(Agregados_Vitalicios.java:26)

acredito que seja algo abaixo da linha do comando sql.

sera que alguem poderia me ajudar a resolver esse erro?

13 Respostas

nel

Tirando que tu quis dizer “de novo” ao invés de “dinovo”, o erro é o seu INSERT.
Veja:

"SELECT * INTO TBD_PESTALOZZI_FILA_ENVIO_'?'_BKP FROM TBD_PESTALOZZI_FILA_ENVIO"

Primeiro que baita nome de tabela hein ? E outra, como tu quer adicionar algo no meio do nome da tabela ???
Veja a syntax correta do uso do Insert: http://www.w3schools.com/sql/sql_insert.asp

L

Mas acontece que em VB fiz o mesmo programa e funciona, so quero muda-lo para o formato em java.

e ja fiz outros programas em java que usam comandos assim, so estou tendo problemas com a colocação da data no comando sql!!

pelo visto não pode me ajudar, vou aguardar alguém que saiba fazer pra poder me ajudar !!!

Quanto ao “dinovo”, quem nunca escreveu errado atire a primeira pedra !!!

MarcioCasteloBranco

Bom dia Amigão

Calendar agora = Calendar.getInstance();   
        Format formato = new SimpleDateFormat("ddMMyyyy");   
        String da = formato.format(agora.getTime()); 
         String query =  "SELECT * INTO TBD_PESTALOZZI_FILA_ENVIO_"+da+"_BKP FROM TBD_PESTALOZZI_FILA_ENVIO";

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 = conn.createStatement();   
           ResultSet rs = stm.executeQuery(query);
  
            con.close();   
  
        } catch (ClassNotFoundException e) {   
            e.printStackTrace();   
        } catch (SQLException e) {   
            e.printStackTrace();   
  
        }
MarcioCasteloBranco

Nel quando utilizar o

select * into tb_temp from tb_fisica e so uma maneira de criar backup de uma tabela.
Vc poderia dar uma olhada http://www.w3schools.com/sql/sql_select_into.asp
ABÇ

L

Desculpe a minha falta de conhecimento é que começei 1 estagio e perguntei ao meu chefe se podia usar java pra poder aprender e ele disse q sim, esse comando sql é 1 comando que ele mesmo me passo, fiz em vb6, e gostaria de passar pra java, esse lance do backup q eu n entendi, o comando sql ele só faz um backup?

nel

LipezinSouza:
Mas acontece que em VB fiz o mesmo programa e funciona, so quero muda-lo para o formato em java.

e ja fiz outros programas em java que usam comandos assim, so estou tendo problemas com a colocação da data no comando sql!!

pelo visto não pode me ajudar, vou aguardar alguém que saiba fazer pra poder me ajudar !!!

Quanto ao “dinovo”, quem nunca escreveu errado atire a primeira pedra !!!

VB não é Java. Se tu não conhece PreparedStatement e/ou JDBC, leia sobre tal.
Fiz uma crítica saudável, é importante que saibamos escrever, infelizmente na atualidade a internet tem prejudicado a escrita, o que pode atrapalhar em um futuro próximo.

Nel quando utilizar o
view plaincopy to clipboardprint?
select * into tb_temp from tb_fisica
e so uma maneira de criar backup de uma tabela.
Vc poderia dar uma olhada http://www.w3schools.com/sql/sql_select_into.asp
ABÇ

Eu sei disso. Só achei extenso o nome da tabela dele, nada além. O erro dele foi usar PreparedStatement para setar o nome da tabela.

MarcioCasteloBranco

Perdão me expressei errado não é backup, e não precisa se DESCULPAR pos a vida éum eterno apredizado.

A instrução SELECT INTO cria uma tabela e a popula com o conjunto de resultados da instrução SELECT. A instrução SELECT INTO pode ser usada para combinar dados de várias tabelas ou exibições em uma única tabela. Também pode ser usada para criar uma tabela que contenha dados selecionados de um servidor vinculado.

L

coloquei do geito q vc falo :

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

Deu erro tambem, mas que coisa estranha

Conectado

java.sql.SQLException: Invalid parameter index 1.

at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.getParameter(JtdsPreparedStatement.java:340)

at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setParameter(JtdsPreparedStatement.java:409)

at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setString(JtdsPreparedStatement.java:689)

at Agregados_Vitalicios.main(Agregados_Vitalicios.java:27)
MarcioCasteloBranco

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

Lipezin tenta assim!

L

AEW AMIGO FOI SIM, Q BURRO Q EU SO, LOGICO Q TINHA Q TIRAR AQUELA LINHA, JA TAVA APONTANDO PRA VARIAVEL, BOM ESSE ERA O PRIMEIRO PROBLEMA QUE FOI RESOLVIDO, AGORA FALTA O 2 PROBLEMA, O CODIGO EU SEI Q ESTA CERTO, MAS FALTA UMA COISA:

Apresenta um erro o código que é o seguinte:

java.sql.SQLException: Invalid object name TBD_PESTALOZZI_FILA_ENVIO.

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:28)

ele n acha essa tabela, mas ele nao acha pois a DATABASE que esse programa aponta é a Database “master”, esse comando é para ser inserido na Database “SCC_PESTALOZZI”, sera que alguem sabe como eu indico em qual Database esse comando deve ser utilizado?

MarcioCasteloBranco

Bom temos que verificar se existe esta TABELA TBD_PESTALOZZI_FILA_ENVIO!

L

EXISTE SIM AMIGO, EU TAVA USANDO O CODIGO Q COLOQUEI NO JAVA, LA NA QUERY, E FUNCIONOU, SO N SEI COMO Q FAÇO PRAO JAVA INDICAR EM QUAL DATABASE DEVE INSERIR O CODIGO

nel

Leia: http://www.guj.com.br/articles/7

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