Pergunta

Eu preciso fazer uma consulta como esta:

SELECT PNPDeviceID FROM Win32_NetworkAdapter WHERE AdapterTypeId = 0

O problema é que a coluna AdapterTypeId não está sempre presente. Neste caso, eu só quero tudo, assim:

SELECT PNPDeviceID FROM Win32_NetworkAdapter
conhecimento

Meu WQL / SQL é extremamente limitada. Alguém pode me dizer como fazer isso em uma única consulta?

EDIT:
Um pouco mais fundo parece ser necessário: Eu estou consultando Windows para obter informações dispositivo usando WMI, que usa um tipo SQL sintaxe. Então, no meu exemplo, eu estou consultando para adaptadores de rede que têm um AdapterTypeId de 0.
Essa coluna não está sempre presente no entanto, o que significa que se eu enumerar os valores devolvidos depois "AdapterTypeId" não está listado.

EDIT 2:
Mudou SQL para WQL; aparentemente este é mais correto.

Foi útil?

Solução

eu estou supondo que você quer dizer o esquema subjacente não é confiável.

Esta é uma situação muito pouco convencional. Eu sugiro que você resolver o problema que está causando a coluna para não estar sempre presente, porque para ter o esquema alterar dinamicamente debaixo de sua aplicação é potencialmente (quase certamente) desastroso.

Update:

OK, então WQL permite consultar objetos com um tipo SQL sintaxe, mas, ao contrário de SQL, o esquema pode mudar debaixo de seus pés. Este é um exemplo clássico de um vazamento abstração , e agora eu odeio WQL sem nunca ter utilizado :).

Uma vez que as propriedades disponíveis são em fluxo, eu estou supondo que WQL fornece uma maneira de enumerar as propriedades para um determinado adaptador. Faça isso, e escolher qual consulta para executar dependendo dos resultados.

Depois de algumas pesquisas no Google, há um exemplo aqui , que mostra como enumerar as propriedades disponíveis. Você pode usar isso para determinar se AdapterTypeId existe ou não.

Outras dicas

SELECT PNPDeviceID FROM Win32_NetworkAdapter WHERE AdapterTypeId = {yourDesire} OR AdapterTypeId IS NULL

Eu suponho que você quer dizer que este campo está ausente da mesa. Sabe antes de submeter a consulta se existe neste campo? Se sim, então basta criar SQL dinamicamente, caso contrário, acho que você vai ter erro de sintaxe em caso de campo faltando

Esta não é uma questão SQL. SQL não registros contemplam com diferentes esquemas em uma única fonte de mesa. Em vez disso (como você menciona), este é um sistema diferente usando um "SQL-like" sintaxe. Você terá melhor sorte se você reformular a questão de usar o produto real que você está tentando consulta e informações como esse produto lida com estruturas de registro de variáveis ??é provavelmente discutida na documentação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top