begin process at 2012 02 13 08:49:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > CONNEXION ORACLE SANS ODBC

CONNEXION ORACLE SANS ODBC


 Information sur la source

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de Donnees Niveau :Débutant Date de création :24/10/2002 Date de mise à jour :24/10/2002 09:41:53 Vu / téléchargé :17 173 / 3 546

Auteur : lscherer

Ecrire un message privé
Site perso
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

Ne cherchez plus, tout est là : comment se connecter à une base oracle sans être soumis aux drivers ODBC. Un exemple d'UPDATE (même modèle que l'INSERT), et de SELECT avec la récupération des données


 Conclusion

Ne Pas oublier si vous insérez ce source dans votre projet de spécifier la référence "Microsoft ActiveX Data Objects X.X Library"

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture BIEN ADMINISTRER LES ETUDIANTS ET LEURS CÔTES par okosa
Source avec Zip VBA EXEL GESTION DE PERSONEL NOUVEAU CONTRAT DE TRAVAI par oudlarbi
Source avec Zip Source avec une capture CREATION D'UN OBJET D'ACCÈS AUX DONNÉES par okosa
Source avec Zip Source .NET (Dotnet) MISAHORAIRE par MdelM
Source avec Zip Source avec une capture BASEDEDONNEES,GESTIONDEMALADES,DATABASSE par shadkitenge

Commentaires et avis

Commentaire de leptidev le 24/10/2002 12:10:57

Merci trop bien ta source, c ce que je cherche

Commentaire de momolescroc le 18/05/2005 10:57:03

Un grand merci pour ta source, mais je ne comprend pas bien ce qui est à ecrire pour "montnsname"?
Est-ce que je dois indiquer le chemin d'accé au tnsname de mon client oracle, ou bien le copier en local, ou alors autre chose?
Aussi, a aucun moment j'indique le nom du serveur distant sur lequel est installé ma base. Est ce que ton appli est prevu pour une base locale?
merci

Commentaire de lscherer le 18/05/2005 19:34:51

Le terme n'est pas approprié, en fait ce n'est pas le TNSNames qu'il faut que tu mettes, mais le nom de l'alias de base de données (celui que tu trouves dans le fichier tnsnames.ora, celui qui s'appelle monalias dans l'exemple ci-dessous), l'adresse IP de ton serveur distant est dans Host, et le nom de ton instance de base de données est dans SID =

tu peux très bien attaquer une base locale, il suffit (pour une personnal oracle) de remplacer la ligne par
objADO.Open "Provider=MSDAORA.1;Password=MonMotDePasse;User ID=MonUser"
En fait on ne spécifie pas le Data Source (alias de Bdd)

Fichier tnsnames.ora dans {ORACLE_HOME}\Network\Admin\

monalias.world =
  (DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS =
          (COMMUNITY = tcp.world)
          (PROTOCOL = TCP)
          (Host = 172.16.63.190)
          (Port = 1521)
        )
        (ADDRESS =
          (COMMUNITY = tcp.world)
          (PROTOCOL = TCP)
          (Host = 172.16.63.190)
          (Port = 1526)
        )
    )
    (CONNECT_DATA = (SID = mabase)
    )
  )

Commentaire de acecel le 12/10/2005 14:36:23

Je me suis permis de modifier/simplifier ta source selon mes besoins.
celle-ci permet maintenant de se connecter soit à une base Access, soit une autre base.

j'ai créé un type dans mon module normal :


********************************************************
Type ParamètreConnexionADODB
    Path As String
    Type As String
    Provider As String
    User As String
    Password As String
    DataSource As String
End Type
Public pdbParamètreConnexion As ParamètreConnexionADODB
********************************************************

pdbParamètreConnexion  contient donc tous les paramètres de connexion (qui sont définis dans le programme, et enregistrés dans la base de registre)

ce module de classe permet juste de renvoyer un recordset, ou exécuter une requete simple.

dans le programme il suffit de déclarer la base :
********************************************************
Public pdbArticle As cDataBase
Set pdbArticle = New cDataBase
pdbArticle.Connexion
********************************************************

et les recordsets :
********************************************************
Dim xrec1 As New ADODB.Recordset
set xrec1 = pdbArticle.OpenRecordset ("Select * from ..")
********************************************************

et pour fermer la base :
********************************************************
pdbArticle.Fermeture
********************************************************







Code à copier dans le module de classe : (cDataBase.cls)


Option Explicit

' /// Variables pour la Connexion ADODB /////////////////////////////////////////////////////////////////////////////////////////
Private pdbConnection As New ADODB.Connection
Private pdbRecordsetADO As New ADODB.Recordset


' /// Ouverture de la Base de Données /////////////////////////////////////////////////////////////////////////

Public Sub Connexion(dbPath As String)
On Error GoTo Connexion_Error

    Select Case pdbParamètreConnexion.Type
        Case "ACCESS"
            pdbConnection.Provider = pdbParamètreConnexion.Provider
            pdbConnection.ConnectionString = dbPath
            pdbConnection.Open
        Case "AUTRE"
            pdbConnection.Open "Provider=" & pdbParamètreConnexion.Provider & ";Password=" & pdbParamètreConnexion.Password & ";User ID=" & pdbParamètreConnexion.User & ";Data Source" & pdbParamètreConnexion.DataSource
    End Select
  
    On Error GoTo 0
    Exit Sub

Connexion_Error:

    MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Connexion dans Module de classe cDataBase", vbCritical
End Sub


' /// Envoi du RecordSet //////////////////////////////////////////////////////////////////////////////////////

Public Function OpenRecordSet(dbSQL As String, Optional dbOption) As ADODB.Recordset
On Error GoTo OpenRecordSet_Error

    If dbSQL <> "" Then
        pdbRecordsetADO.CursorLocation = adUseClient
        pdbRecordsetADO.CursorType = adOpenDynamic
        pdbRecordsetADO.LockType = adLockOptimistic
        pdbRecordsetADO.Open dbSQL, pdbConnection
        Set OpenRecordSet = pdbRecordsetADO
        Set pdbRecordsetADO = Nothing
    End If
    
  
    On Error GoTo 0
    Exit Function

OpenRecordSet_Error:

    MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure OpenRecordSet dans Module de classe cDataBase", vbCritical
End Function

' /// Exécution d'une Requête SQL /////////////////////////////////////////////////////////////////////////////

Public Sub Execute(xSQL As String)
On Error GoTo Execute_Error

    pdbConnection.Execute xSQL
  
    On Error GoTo 0
    Exit Sub

Execute_Error:

    MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Execute dans Module de classe cDataBase", vbCritical
End Sub



' /// Fermeture de la connexion avec la Base de Données ///////////////////////////////////////////////////////

Public Sub Fermeture()
On Error GoTo Fermeture_Error

    pdbConnection.Close
    Set pdbConnection = Nothing
  
    On Error GoTo 0
    Exit Sub

Fermeture_Error:

    MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Fermeture dans Module de classe cDataBase", vbCritical
End Sub

Commentaire de tdeanaz le 02/05/2007 17:58:15

Bonjour,

Je cherche à utiliser le code utilisé ici, mais sur un PC sur lequel il n'y a pas de fichier tnsnames.ora. Est-il possible d'inclure dans le code les informations (IP, SID, etc..) nécessaires à l'établissement de la connexion?
MErci!

Commentaire de lscherer le 02/05/2007 18:24:02

Bonjour,

Non désole, mais ce source ne peut se dispenser d'avoir un client Oracle Installé ou du moins je n'en connais pas la méthode. Je sais que java n'en n'a pas besoin, mais dans notre cas, je rappel que nous sommes en VB...

Bon courage

Laurent

Commentaire de tdeanaz le 03/05/2007 09:53:42

Bonjour,

Après quelques essais, j'ai trouvé un moyen de pouvoir au moins s'affranchir du fichier tnsnames.ora, la nécessité ou non d'un client Oracle n'a pas encore été testée...

Le code que j'ai pu trouver:

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As ADODB.Command

Set conn = New ADODB.Connection
Set sql = New ADODB.Command
Set rs = New ADODB.Recordset
                    

TNS_INFO = "(DESCRIPTION=" & _
                       "(ADDRESS_LIST=" & _
                       "(ADDRESS=(PROTOCOL=TCP)" & _
                       "(HOST=entrer_ici_l_Adresse_IP)" & _
                       "(PORT=entrer_ici_le_port)))" & _
                       "(CONNECT_DATA=(SID=entrer_ici_le_SID_de_la_base)" & _
                       "(SERVER=DEDICATED)))"
    
conn.ConnectionString = "Provider=msdaora;" & _
                       "Data Source=" & TNS_INFO & ";" & _
                       "user id=entrer_ici_le_user_id;" & _
                       "password=entrer_ici_le_mdp"
Debug.Print conn.ConnectionString
  
conn.Open

Merci pour les encouragements!

Commentaire de tdeanaz le 04/05/2007 10:31:28

Petite modification:
Le code semble mieux fonctionner en mettant "Provider=oraoledb.oracle;"

Commentaire de lscherer le 04/05/2007 12:05:13

Trop bien !
Je vais regarder ça rapidement.
ça m'a l'air pas mal du tout.
Je regarderais aussi pour le client Oracle

Laurent

Commentaire de ouzaamedali le 23/05/2007 14:52:08

Merci pour tous les informations diffusées sur ce forum car elles sont capitales et utiles pour effectuer la première étape de mon stage.
Reste que je n’arrive toujours pas à me connecter à ma base de données oracle à travers le code si dessus, pouvez vous m’expliquer que dois je remplir à ce code, je vous montre ce que j’ai modifier  en rouge:

Private Sub CommandButton1_Click()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As ADODB.Command

Set conn = New ADODB.Connection
Set sql = New ADODB.Command
Set rs = New ADODB.Recordset
TNS_INFO = "(DESCRIPTION=" & _
                       "(ADDRESS_LIST=" & _
                       "(ADDRESS=(PROTOCOL=TCP)" & _
                       "(HOST=192.168.0.32)" & _
                       "(PORT=entrer_ici_le_port)))" & _
                       "(CONNECT_DATA=(SID= X3)" & _
                       "(SERVER= controler)))"
conn.ConnectionString = "Provider=msdaora;" & _
                       "Data Source=" & TNS_INFO & ";" & _
                       "user id= GC;" & _
                       "password=tiger"
Debug.Print conn.ConnectionString
conn.Open
End Sub

Commentaire de tdeanaz le 23/05/2007 14:55:26

Pour le moment ce code ne fonctionne que lorsqu'un client Oracle est installé sur la machine client.
De plus, dans le code que tu fournis, tu n'as pas entré le port de connexion au serveur.
Pour finir, le rouge n'apparait visiblement pas :)
Bon courage!

Commentaire de lscherer le 23/05/2007 17:15:16

Pour le port, celui définit par défaut pour Oracle est le plus souvent 1521, sinon on trouve régulièrement aussi 1526
Toutes ces informations peuvent t'être founies par ton admin de base de données

Commentaire de jmgaudel le 12/06/2007 15:18:40

Bonjour,

je développe une appli sous access en VBA qui doit permettre de se connecter à une base Oracle distante à partir de plusieurs postes. j'ai l'impression que ce code pourrait m'aider, cependant n'ayant pas VB d'installé sur mon PC, serait-il possible d'avoir une copie du code en ".txt" sur l'article?

Merci d'avance.

Commentaire de bsidy1 le 29/08/2008 10:27:39

JE TROUVE VRAIMENT TRES BON CE CODE
CEPENDANT JE DEPLORE QU'ON SOIT TENU OBLIGE D'AVOIR LE CLIENT SUR LA MACHINE POUR QUE LES CHOSES TOURNENT.  A DIEU LA PORTABILITE DE VB
MERCI

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales