Question Recherche valeur table SQL server

Plus d'informations
il y a 12 ans 1 mois #16954 par gouzerh
Salut !

J'ai une base de données SQL server. J'arrive à vérifier l'existence d'une table avec \"IF OBJECT_ID\". Mais maintenant je chercher à vérifier l'existence d'une certaine valeur dans une table, pour faire une certaine commande sql si elle existe.
Et la impossible de trouver comment faire !

Après plusieurs heures de recherches je m'en remet à vous :blush:

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #16958 par Philippe
et bien c'est pas du powershell mais du sql
mais bon ....

avec un select where sur la table

exemple :

[code:1]select * from Table1 where nomduchamp like '%trouve%'[/code:1]
ici je cherche 'trouve' dans le champ 'nomduchamp ' de la table 'Table1'

ca repond a ta question ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #16965 par gouzerh
Oui je sais bien mais le problème est autre. Enfait je dois trouver si une valeur est présente et si elle ne les pas faire un insert. J'ai éssayé pas mal de requete sql comme IF EXISTS mais j'arrive à rien.
Je me demande comment lire dans powershell le résultat d'une requete pour pouvoir faire une action après.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #16967 par Philippe
salut Seriale

un exemple de récupération de données sql dans powershell

[code:1]$Conn = new-object system.data.sqlclient.sqlconnection
# Connexion avec l'authentification Windows
$Conn.connectionstring = \"Server=srv-sql\instance;database=admin;Integrated Security = SSPI;\"
# Ouvre la connexion
$Conn.Open()
# On interroge une table de SQL Server
$Requete = \"select top 1 * from orders where o_etat = 0\"

$cmd = New-object system.data.sqlclient.SqlCommand
$cmd.connection = $conn
$cmd.commandtext = $Requete
# Exécute la requête et retourne le nombre de lignes
$z = $cmd.Executenonquery()

$DataAdapter = new-object System.Data.SqlClient.SQLDataAdapter($cmd)
$DataSet = new-object System.Data.DataSet
$lignes = $DataAdapter.Fill($DataSet)
# Récupére les données en XML
#$DataSet.GetXML()
# ou bien en texte
#$DataSet.Tables[0].Rows


if ($lignes -gt 0) {
$id = [string]$DataSet.Tables[0].rows[0].id
}[/code:1]

$lignes indique le nombre de ligne lu
$DataSet contient les données lu
$id aurra la valeur du champ id de la table orders (premieres table de $DataSet.Tables, premier champ de $DataSet.Tables[0].rows)

c'est une des façons de lire et utilisé $DataSet

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #16969 par gouzerh
Merci ! J'avais éssayé quelque chose dans cet esprit je crois. Je n'y arrive toujours pas , je dois mal m'y prendre. Avec ce code il me rajoute bien ce que je veux dans une table. Mais le but étant qu'il n'y est pas de doublons, donc si je le relance il me rajoute uniquement les valeurs qui ne sont pas égales à celles présentes dans la table. Mais il rajoute à chaque fois.

[code:1]########################
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = “select * from logiciels where nomLogiciel = '$_.DisplayName' AND versionLogiciel = '$_.DisplayVersion'”
$SqlCmd.Connection = $SqlConnection
$SqlCmd.ExecuteNonQuery()
$DataAdapter = new-object System.Data.SqlClient.SQLDataAdapter($SqlCmd)
$DataSet = new-object System.Data.DataSet
$lignes = $DataAdapter.Fill($DataSet)

########################
if ($lignes -gt 0) {
$id = [string]$DataSet.Tables[0].rows[0].id
}
if($id -ne '$_.DisplayName'){
$qSQL = $Soft| foreach {
if ($_.DisplayName) {
\"INSERT INTO logiciels VALUES ('{0}', '{1}' )\" -f $($_.DisplayName -replace \"'\",\" \"«»), $($_.DisplayVersion -replace \"'\",\" \"«»)
}
else{}
}
}
# Création d'object pour la connexion à SQL server
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand;
# Passe la commande SQL dans une variable d'éxécution
$SqlCmd.CommandText = $qSQL
# Connexion à la base de données
$SqlCmd.Connection = $SqlConnection
# Exécution de la commande SQL
$SqlCmd.ExecuteNonQuery()[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #16988 par SiSMik
Réponse de SiSMik sur le sujet Re:Recherche valeur table SQL server
Bonjour,

Ce qu'il te manque c'est la gestion des valeurs déjà présentes dans ta table.
Pour vérifier ceci, tu peux utiliser la clause NOT EXIST

Un exemple en dessous.

[code:1]
INSERT INTO
matable
( maclefprimaire
, maclefetrangere
, monattribut
)
SELECT 1
, 1
, 'valeurtexte'
FROM tablebidon
WHERE NOT EXISTS
( SELECT 0
FROM matable
WHERE maclefprimaire = 1
)
;
[/code:1]

Bonne soirée

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.052 secondes
Propulsé par Kunena