Asp.net - fonctions de requettes pour des connexion via odbc

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 876 fois - Téléchargée 30 fois

Contenu du snippet

Sur le même principe de la connexion à une base MySQL, voici quelques petites fonctions permettant de se connecter un n'importe quelle source de données (du moment qu'un Lien DSN système est créé sur le serveur WEB).

Ces fonctions sont valables pour le cas d'une machine sous FrameWork 1.0 ayant installé ODBC.NET.

Pour une question de simplicité d'utilisation, je les ai regroupé dans une class qu'il vous suffit d'intégrer dans un fichier xxx.vb qui sera dans votre projet.

Source / Exemple :


Imports Microsoft.Data.Odbc
Imports System.Web

' ------------------------------------------------------------------------------------
Public Class ODBC_Requettes
 ' ------------------------------------------------------------------------------------
 Public Shared Function MyODBCReader(ByVal ReqSQL As String, ByVal MaConnexionString As String) As OdbcDataReader
 ' Connexion à un server via ODBC avec requette qui renvoie un datareader
  
  Dim MyODBCConnexion As New OdbcConnection(MaConnexionString)

  Try
   Dim MyCommand As New OdbcCommand()
   Dim MyDataReader As OdbcDataReader

   MyODBCConnexion.ReleaseObjectPool()
   MyODBCConnexion.Open()
   MyCommand.Connection = MyODBCConnexion
   MyCommand.CommandText = ReqSQL
   MyDataReader = MyCommand.ExecuteReader(CommandBehavior.CloseConnection)
   MyODBCReader = MyDataReader
   MyODBCConnexion.ReleaseObjectPool()
  Catch MyOdbcException As OdbcException
   HttpContext.Current.Trace.Write(MyOdbcException.ToString)
  Catch MyException As Exception
   HttpContext.Current.Trace.Write(MyException.ToString)
  Finally
   If Not (MyODBCConnexion Is Nothing) Then
    MyODBCConnexion.Close()
    MyODBCConnexion = Nothing
   End If
  End Try
 End Function

 ' --------------------------------------------------------------------------
 Public Shared Function MyODBCDataset(ByVal ReqSQL As String, ByVal MaConnexionString As String, ByVal NomDataTable As String) As DataSet
 ' Connexion à un server via ODBC avec le Driver ODBC 3.51 avec requette qui renvoie un dataset
 
  Dim MyODBCConnexion As New OdbcConnection(MaConnexionString)
  Try
   Dim ds As New DataSet()
   Dim cmd As OdbcDataAdapter = New OdbcDataAdapter(ReqSQL, MyODBCConnexion)
   Dim MyCommand As New OdbcCommand()
   Dim MyDataReader As OdbcDataReader

   cmd.Fill(ds, NomDataTable)
   Return ds
  Catch MyOdbcException As OdbcException
   HttpContext.Current.Trace.Write(MyOdbcException.ToString)
  Catch MyException As Exception
   HttpContext.Current.Trace.Write(MyException.ToString)
  Finally
   If Not (MyODBCConnexion Is Nothing) Then
    MyODBCConnexion.Close()
    MyODBCConnexion = Nothing
   End If
  End Try
 End Function

 ' ------------------------------------------------------------------------------------
 Public Shared Function MyODBCExecute(ByVal ReqSQL As String, ByVal MaConnexionString As String)
 ' Connexion à un serveur via ODBC qui exécute une requette (insert, delete ou update)

  Dim MyODBCConnexion As New OdbcConnection(MaConnexionString)

   Try
    Dim MyCommand As New OdbcCommand()
    Dim MyDataReader As OdbcDataReader

    MyODBCConnexion.Open()
    MyCommand.Connection = MyODBCConnexion
    MyCommand.CommandText = ReqSQL
    MyCommand.ExecuteNonQuery()
    MyODBCConnexion.ReleaseObjectPool()
   Catch MyOdbcException As OdbcException
    HttpContext.Current.Trace.Write(MyOdbcException.ToString)
   Catch MyException As Exception
    HttpContext.Current.Trace.Write(MyException.ToString)
   Finally
    If Not (MyODBCConnexion Is Nothing) Then
     MyODBCConnexion.Close()
     MyODBCConnexion = Nothing
    End If
   End Try
  End Function

  ' ------------------------------------------------------------------------------------
 End Class

==================================
' Pour utiliser cette classe il suffira donc de faire comme dans l'exemple suivant :

Protected WithEvents DataGridResultats As System.Web.UI.WebControls.DataGrid

....

Dim MaConnexionString As String = "DSN=MonDSN;uid=MonLogin;pwd=MonPass"

Dim MaRequetteSQL As String = "SELECT * FROM MaTable;"
Dim MaDatasetResultat As DataSet

MaDatasetResultat = ODBC_Requettes.MyODBCDataset(MaRequetteSQL, MaConnexionString, "ListeResultats")

DataGridResultats.DataSource = MaDatasetResultat.Tables("ListeResultats")
DataGridResultats.DataBind()

MaDatasetResultat.Dispose()

Conclusion :


Cette classe est à adapter pour les développeur travaillant sous le FrameWork 1.1.

Bon Coding

Romelard Fabrice (Alias F___)

A voir également

Ajouter un commentaire

Commentaires

cs_fabrice69
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4
Il n'est adapté comme c'est précisé dans la présentation qu'au FrameWork 1.0 et surtout pas au FW 1.1 (celui-ci ayant rapatrié la classe ODBC dans le FW directement comme pour oracle ou SQL Srv).

F___
DonCastor
Messages postés
9
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
10 janvier 2005

je tiens a dire que ton code est bien mais ne serait il pas un peu buggé ou pas compatible avec certaines nouvelles versions.
je développen asp.net et il me pose qq pb de compatibilté...

Mais sinon je dois avouer que c'est du bon boulot
Merci a toi
sylv2001
Messages postés
6
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
24 février 2004

étant débutant en asp.net, je ne vois pas ou ajouter cette ligne dans ton code. pourrai-tu m'aider?
cs_fabrice69
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4
Avec un simple test pour la valeur dbnull
Il me semble que c un truc du genre
if isdbnull(tonchamp) then...

F___
sylv2001
Messages postés
6
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
24 février 2004

Super comme code. Seulement comme mes tables de ma base MySql présentent parfois des champs vides, ça plante: l'exception System.NullReferenceException est levé. Aurais-tu une solution?

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.