ALTER TABLE

NETVOO 13/01/2017 19:05:11
#470686
Olá pessoal.

Estou com dificuldades em alterar e add colunas novas nas tabelas existentes no sqlserver2014
Até consegui ADD, porem eu preciso de pesquisar antes se já existe essa coluna antes de rodar o alter table.
então que preciso de rodar uma consulta e pegar um retorno para ver se já existe eu não executo o comando e se não eu executo ele.

Estou usando assim para alterar e segue a tentativa para pesquisar se já existe.

using (SqlCommand cmdfind = new SqlCommand([Ô]SELECT COUNT(COLUMN_NAME) AS retorno FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = [ô]Contador[ô] AND COLUMN_NAME = [ô]C[ô][Ô], DaoSqLServer.coSneXao))
{
cmdfind.ExecuteNonQuery();

if (Aqui vai o retorno que não estou conseguindo obter que se já existe)
{
MessageBox.Show([Ô]ja existe na tabela.[Ô]);
}
else
{
MessageBox.Show([Ô]não existe na tabela.[Ô]);
using (SqlCommand cmd = new SqlCommand([Ô]ALTER TABLE Contador ADD C varchar(75);[Ô], DaoSqLServer.coSneXao))
{
cmd.ExecuteNonQuery();
DaoSqLServer.coSneXao.Close();

}
}

Alguém poderia ajudar ..

NILSONTRES 13/01/2017 19:40:22
#470687
Não sei se é possível essa consulta, nunca uma coluna é criada em duplicidade, então eu trato isso com o erro, se sim, toca o barco. Isso desde a época do access.
ELUCIMAR 13/01/2017 22:26:07
#470691
Resposta escolhida
NETVOO
Ao invés comparar com dois objetos command executa um objeto comando colocando um If no script Sql. Veja o exemplo que montei para você:

StringBuilder sbSql = new StringBuilder();
sbSql.Append([Ô]if Exists [Ô]);
sbSql.Append([Ô]( [Ô]);
sbSql.Append([Ô] SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS [Ô]);
sbSql.Append([Ô] WHERE TABLE_NAME = [ô]Contador[ô] AND COLUMN_NAME = [ô]C[ô] [Ô]);
sbSql.Append([Ô]) [Ô]);
sbSql.Append([Ô]Begin [Ô]);
sbSql.Append([Ô] Alter Table Contador alter Column C Varchar(50) [Ô]);
sbSql.Append([Ô]End [Ô]);
sbSql.Append([Ô]Else [Ô]);
sbSql.Append([Ô]Begin [Ô]);
sbSql.Append([Ô] Alter Table Contador Add C varchar(75) [Ô]);
sbSql.Append([Ô]End[Ô]);

SqlConnection suaConexao = new SqlConnection();
SqlCommand cmdfind = new SqlCommand(sbSql.ToString(), suaConexao);
cmdfind.ExecuteNonQuery();
NETVOO 14/01/2017 01:31:35
#470697
NILSONTRES valeu pela dica, eu iria fazer isso se não tivesse outra opção.
NETVOO 14/01/2017 01:33:21
#470698
Citação:

:
NETVOO
Ao invés comparar com dois objetos command executa um objeto comando colocando um If no script Sql. Veja o exemplo que montei para você:

StringBuilder sbSql = new StringBuilder();
sbSql.Append([Ô]if Exists [Ô]);
sbSql.Append([Ô]( [Ô]);
sbSql.Append([Ô] SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS [Ô]);
sbSql.Append([Ô] WHERE TABLE_NAME = [ô]Contador[ô] AND COLUMN_NAME = [ô]C[ô] [Ô]);
sbSql.Append([Ô]) [Ô]);
sbSql.Append([Ô]Begin [Ô]);
sbSql.Append([Ô] Alter Table Contador alter Column C Varchar(50) [Ô]);
sbSql.Append([Ô]End [Ô]);
sbSql.Append([Ô]Else [Ô]);
sbSql.Append([Ô]Begin [Ô]);
sbSql.Append([Ô] Alter Table Contador Add C varchar(75) [Ô]);
sbSql.Append([Ô]End[Ô]);

SqlConnection suaConexao = new SqlConnection();
SqlCommand cmdfind = new SqlCommand(sbSql.ToString(), suaConexao);
cmdfind.ExecuteNonQuery();



ELUCIMAR valeu Muito Obrigado Pela atenção, eu estava com esse if aqui mas não estava sabendo aplicar ele.
Valeu pelo Exemplo, funcionou perfeito com a alteração aqui para o projeto..
Tópico encerrado , respostas não são mais permitidas