Inquiridor
Meu select no c# nao, esta funcionando

Pergunta
-
Preciso selecionar os ids de 4 tabelas diferentes e estou fazendo assim:
SELECT Id FROM [unitydb].[dbo].[AccessGroups];
using (SqlCommand command = new SqlCommand(sql_select, connection))
SELECT Id FROM [unitydb].[dbo].[AccessPoints];
SELECT Id FROM [unitydb].[dbo].[TimeGroups];
SELECT Id FROM [unitydb].[dbo].[Controllers]";
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
tableAccessLevels.Rows.Add(reader.GetInt32(0), reader.GetInt32(1), reader.GetInt32(2), reader.GetInt32(3));
}
}estou utilizando uma dataRow para salvar os campos de cada busca e utilizando um foreach nesse dataRow para fazer a inserção em uma outra tabela:
INSERT INTO [dbo].[AccessLevels] " +
"([AccessGroupId] " +
",[EntityId] " +
",[EntityType] " +
",[TimeGroupId] " +
",[EndPointId]) " +
"SELECT '" + dr["IdGroupAccess"] + "' , " +
"'" + dr["IdAccessPoint"] + "' ," +
"3 ," +
"'" + dr["IdTimeGroups"] + "' " +
"'" + dr["IdControllers"] + "' " ;*os dr foi o nome que coloquei no foreach para armazenar os dados que vem do select.
Tem algo errado no select? quando tento executar desse jeito aparece "Index was outside the bounds of the array".
Alguem sabe o que pode ser?
Todas as Respostas
-
Olá,
Execute um select por vez. Como você precisa de todos os ids ao mesmo tempo, faça o join relacionando as tabelas e nomeie os ids para não gerar duplicidade no momento de ler. Ex.: SELECT Id as Id_AccessGroups FROM [unitydb].[dbo].[AccessGroups];
--
Espero que isso te ajude. Se te ajudou, marque como resposta para fechar a thread e ajudar outros usuários.
Abrs,
Reginaldo Villela. -
cara agora ta dando um erro no insert assim "The INSERT statement conflicted with the FOREIGN KEY constraint "FK_AccessLevels_TimeGroups". The conflict occurred in database "unitydb", table "dbo.TimeGroups", column 'Id'."
e só esta pegando os dados da primeira colunas que busco que é 'AccessGroupId'...
entao no accessgroupId aparece o valor, nos outros fica zerado e nessa AccessLevels da erro de foreign key.
-
-
-
Olá,
Então é necessário vc fazer consulta por consulta e armazenando os valores em variáveis.
Se as tabelas tivessem relacionamentos, você poderia fazer os joins e em apenas uma consulta, recuperaria os 4 valores necessários.
Espero que isso te ajude. Se te ajudou, marque como resposta para fechar a thread e ajudar outros usuários.
Abrs,
Reginaldo Villela. -
brunights,
Talvez o uso de CTEs ou até mesmo da cláusula output podem lhe ajudar, veja se os links abaixo podem trazer alguma tipo de solução:
WITH common_table_expression (Transact-SQL) - SQL Server | Microsoft Docs
OUTPUT Clause (Transact-SQL) - SQL Server | Microsoft Docs
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]