Passando o nome da tabela por parâmetro

5 respostas
C

E ae Pessoal, blz?

Criei um método p/ gravar os dados numa tabela. Esses dados vem por parâmetro. Até  td bem, mas gostaria de passar o nome da tabela por parêmetro também, tentei assim, mas não funciono.:

public static boolean salvar(String tabela, String codigo, String desc, String cor, String forn, String CodFor, String tipo){

String sql = “insert into ? values(?,?,?,?,?,?)”;

try {
PreparedStatement ps = DataBase.getConnection().prepareStatement(sql);

ps.setString(1,tabela);

ps.setInt(2,x);

ps.setString(3,desc);

ps.setString(4,cor);

ps.setString(5,forn);

ps.setString(6,CodFor);

ps.setString(7,tipo);

int resultado = ps.executeUpdate();

if(resultado > 0) return true;

} catch (SQLException e) {

e.printStackTrace();

return false;

}

return false;

}

Entenderam?
Deu o seguinte erro.:
Parâmetro ‘Pa_RaM000’ especificado onde um nome de tabela é necessário. :?:

Esse valor de tabela, eu escolho num combo, assim eu mando aqueles dados p/ Tabela q eu escolher no combo; É isso q eu queo fazer, sem precisar ficar criando um método p. cada item do combo.

:idea: Se alguém puder me ajudar ficarei mto grato!

5 Respostas

H

O erro está aparecendo porque você está passando um valor inválido como parâmetro para a Tabela, e eu sinceramente não entendi sua dúvida. :wink:

C

Aí q está o problema, o valor q estou passando por parâmetro está certo, tanto q se eu der um System.out.println(tabela); imprime exatamento o nome da tabela;

Eu estava usando assim.:
String sql = “insert into Produtos values(?,?,?,?,?,?)”;

e alterei por.:
String sql = “insert into ? values(?,?,?,?,?,?)”;

é aceitável passar o nome da tabela tb por.: ? // Essa é minha dúvida :!:
PreparedStatement ps = …
ps.setString(1,tabela); :?:

OBS.: tabela vem por parâmetro, mas o valor está vindo certo.

E

“christian_jahu”:
E ae Pessoal, blz?

Criei um método p/ gravar os dados numa tabela. Esses dados vem por parâmetro. Até  td bem, mas gostaria de passar o nome da tabela por parêmetro também, tentei assim, mas não funciono.:

public static boolean salvar(String tabela, String codigo, String desc, String cor, String forn, String CodFor, String tipo){

String sql = “insert into ? values(?,?,?,?,?,?)”;

try {
PreparedStatement ps = DataBase.getConnection().prepareStatement(sql);

ps.setString(1,tabela);

ps.setInt(2,x);

ps.setString(3,desc);

ps.setString(4,cor);

ps.setString(5,forn);

ps.setString(6,CodFor);

ps.setString(7,tipo);

int resultado = ps.executeUpdate();

if(resultado > 0) return true;

} catch (SQLException e) {

e.printStackTrace();

return false;

}

return false;

}

Entenderam?
Deu o seguinte erro.:
Parâmetro ‘Pa_RaM000’ especificado onde um nome de tabela é necessário. :?:

Esse valor de tabela, eu escolho num combo, assim eu mando aqueles dados p/ Tabela q eu escolher no combo; É isso q eu queo fazer, sem precisar ficar criando um método p. cada item do combo.

:idea: Se alguém puder me ajudar ficarei mto grato!

Tente assim:

....
String sql = "insert into " + tabela + " values(?,?,?,?,?,?)";
  
  try {
   PreparedStatement ps = DataBase.getConnection().prepareStatement(sql);
 
   ps.setInt(1,x);
   ps.setString(2,desc);
   ps.setString(3,cor);
   ps.setString(4,forn);
   ps.setString(5,CodFor);
   ps.setString(6,tipo);
....
J

É real, quando vc quizer usar um PreparedStatement por ele ser pré-compilado ele nao vai aceitar ? pra compilar… também porque ? é para paramertos… mas ja a soluçao do nosso amigo, acima, não sei se funciona… nunca tentei, mas se funcionar posta ai a soluçao para constar para próximas pesquisas!

abraço!

cya!

C

:grin: Galera !! Funciono !!!

Obrigado a todos!

Valeu eaduarte!

t+…

Criado 23 de julho de 2004
Ultima resposta 23 de jul. de 2004
Respostas 5
Participantes 4