Usuário com melhor resposta
Inclusão de tabela via código

Pergunta
-
Senhores,
Estou desenvolvendo uma aplicação em VB.NET com SQL Server 2008, utilizando o Visual Studio 2010. Minha necessidade é incluir uma tabela no banco de dados SQL Server via código, pois ao longo do aplicativo, serão vária tabelas. Criei uma função para passar o nome da tabela para uma instrução SQL, conforme abaixo:
Public Sub cadastraTabela(ByVal txtTabela As String)
'METODO PARA INCLUSAO DE TABELA DE PDM NO BANCO DE DADOS
Try
Dim sql As String = "CREATE TABLE @NomeTabela (CodMaterial INT NOT NULL, TextoLongo VARCHAR (250) NOT NULL)"
db.AddParameter("@NomeTabela", txtTabela)
db.ExecuteNonQuery(sql)
MsgBox("OK")
Catch ex As Exception
Throw ex
End TryEntretanto, ao executar a função, o sistema retorna a mensagem: "Erro de sintaxe proximo a @NomeTabela". Alguém pode me ajudar, esclarecendo como passar o nome da tabela como variável? Pretendo usar função semelhante para incluiir campos em tabelas.
Grato,
Claudio Mota
Respostas
-
Claudio,
Nomes de objetos do banco (como nomes de tabelas, nomes de procedures, campos, etc) não podem ser passados via parâmetro ao DbCommand... Portanto, nesse caso, você não poderia utilizar parâmetro para passar o nome da tabela, mas sim, construir a sua sentença dinamicamente sem utilizar parâmetro (ou até mesmo criar uma procedure que recebe o nome da tabela a ser criada e utilizar então essa procedure para fazer a criação da tabela)... Maiores informações nesta outra thread:
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Sugerido como Resposta Luiz Estevam sexta-feira, 20 de maio de 2011 04:11
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 27 de maio de 2011 12:34
Todas as Respostas
-
Amigo, aonde você está atribuindo este comando sql ao sqlcommand ?
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :) -
Claudio,
Nomes de objetos do banco (como nomes de tabelas, nomes de procedures, campos, etc) não podem ser passados via parâmetro ao DbCommand... Portanto, nesse caso, você não poderia utilizar parâmetro para passar o nome da tabela, mas sim, construir a sua sentença dinamicamente sem utilizar parâmetro (ou até mesmo criar uma procedure que recebe o nome da tabela a ser criada e utilizar então essa procedure para fazer a criação da tabela)... Maiores informações nesta outra thread:
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Sugerido como Resposta Luiz Estevam sexta-feira, 20 de maio de 2011 04:11
- Marcado como Resposta AndreAlvesLimaModerator sexta-feira, 27 de maio de 2011 12:34