Connexion sql server 2008 depuis VB6 [Résolu]

harrycossek 3 Messages postés mercredi 18 mai 2011Date d'inscription 19 mai 2011 Dernière intervention - 18 mai 2011 à 19:02 - Dernière réponse :  obedndele
- 13 juin 2013 à 15:02
Bonjour, je voudrais savoir s' il est effectivement possible de se connecter a une base de donnée SQL Server 2008 depuis VB6.
Impossible de trouver une réponse claire sur le net.

Merci
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 18 mai 2011 à 23:35
2
Merci
Salut

Absolument.
En fait, quelque soit le serveur, du moment qu'il répond au standard, la seule chose qui change, c'est la chaine de connexion. La gestion des tables, des champs, les règles SQL s'appliquent ensuite à tous les serveur (SQL Server, Access, Oracle, MySQL, ...)

Donc, il te suffit de trouver la chaine de connexion.
Une excellente référence dans ce domaine : <ce site>
Pour définir cette chaine, il faut un petit peu connaitre SQL Server, notamment sur la partie login/authentification.
Soit tu utilises le login classique : UserName/Password
Soit ton login est le même que celui de ta cession Windows et alors tu peux utiliser la connexion "Trusted" (SSPI) - vérifiée-authentifiée.
Ceci est très pratique lorsque plusieurs utilisateurs doivent se connecter - il suffit de les avoir déclarés parmi les Users, et Windows dialoguera avec le serveur pour prouver l'authenfifcation.
Par contre, si la connexion au serveur requière un unique UserName/Password, il faut choisir la solution classique.

Un exemples de connexion.
Dans cet exemple, la connexion se fait en SSPI si le serveur est installé sur la même machine, sinon, utilise le login :
Public Function ConnectSqlServer(ServerName As String, DBName As String) As Boolean
    ' Renvoie True si connexion Ok
    On Error GoTo Erreur
    With cnnSqlServer
        ' Referme si déjà ouverte
        If .State <> adStateClosed Then .Close
        ' Paramétrage connexion
        .ConnectionTimeout = 25
        .Provider = "sqloledb"
        .Properties("Data Source").Value = ServerName
        .Properties("Initial Catalog").Value = DBName
        If IsSqlServerLocal(ServerName) Then
            ' SQL Server sur la même machine : Authentification Windows
            .Properties("Integrated Security").Value = "SSPI"
        Else
            ' SQL Server dédié
            .Properties("Locale Identifier").Value = 1033   ' Anglais
            .Properties("User ID").Value = sUserID
            .Properties("Password").Value = sPassword
        End If
        On Error Resume Next
        ' Connexion
        .Open
        ' Attend connexion terminée
        Do While .State = adStateConnecting
            DoEvents
        Loop
        On Error GoTo 0
        ' Au final, renvoie True si on est bien ouvert
        ConnectSqlServer CBool(.State adStateOpen)
    End With
Fin:
    Exit Function
Erreur:
    M.LogOnly "#### ConnectSqlServer - Erreur " & CStr(Err.Number) & " - " & Err.Description
    Resume Fin
End Function

avec les fonctions annexes suivantes :
Public Function IsSqlServerLocal(NomDuServeur As String) As Boolean
    ' Renvoie True si le SQL Server est installé sur la même machine
    '   que celle qui veut faire des requètes (ici)
    ' Utile pour le mode de connexion et la conversion des dates
    Dim sTemp As String
    sTemp = myComputerName
    IsSqlServerLocal CBool(StrComp(NomDuServeur, sTemp, vbTextCompare) 0)
End Function
Public Function myComputerName() As String
    ' Renvoie le nom du poste
    Dim sTemp As String
    Dim r As Long
    sTemp = String(MAX_COMPUTERNAME_LENGTH, Chr$(0))
    r = MAX_COMPUTERNAME_LENGTH + 1
    Call GetComputerName(sTemp, r)
    sTemp = Left$(sTemp, r)
    myComputerName = sTemp
End Function
qui nécessitent ces déclarations :
Private Const MAX_COMPUTERNAME_LENGTH As Long = 31
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 2

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 18 mai 2011 à 23:53
1
Merci
Je le pense, oui.
La ligne SQL Server a toujours été a compatibilité ascendante. Seuls varient les capacités (tailles, types de données, ...) et la sécurité, mais 95% de chance que, une fois la connexion effectuée, que tes requètes 2000 fonctionnent sur les versions supérieures.
Commenter la réponse de cs_Jack
harrycossek 3 Messages postés mercredi 18 mai 2011Date d'inscription 19 mai 2011 Dernière intervention - 18 mai 2011 à 23:49
0
Merci
Que dire? Merci infiniment pour cette réponse lumineuse!
Pour aller plus loin, une appli sous VB6 prévue pour fonctionner avec SQL 2000 fonctionnera t elle obligatoirement avec un serveur SQL 2008?
Commenter la réponse de harrycossek
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 18 mai 2011 à 23:49
0
Merci
Et l'objet est, bien entendu, ADO
Public cnnSqlServer  As ADODB.Connection     ' Accès à la database SQL Server
Commenter la réponse de cs_Jack
harrycossek 3 Messages postés mercredi 18 mai 2011Date d'inscription 19 mai 2011 Dernière intervention - 19 mai 2011 à 09:47
0
Merci
Encore merci!
Commenter la réponse de harrycossek
0
Merci
comment puis je alors travailler avec sql 2000
Commenter la réponse de isidor82
obedndele - 13 juin 2013 à 15:02
0
Merci
salut, je veux savoir s'il y a moyen de connecter sql server à Vb6 à partir de l'objet DATA?
Commenter la réponse de obedndele

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.