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

0/5 (7 avis)

Snippet vu 14 386 fois - Téléchargée 32 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_jcq Messages postés 211 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 janvier 2010
23 déc. 2003 à 16:10
Très bien comme class, par contre étant débutant an ASP.NET je sais pas si elle est rapide et bouffe pas trop de resource.
Pour ceux qui ont pas installé ODBC.NET, changer les connections odbc par oledb... c trés bien aussi pour de l'access.
cs_jcq Messages postés 211 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 janvier 2010
26 déc. 2003 à 16:00
la fonction MyODBCReader ne fonctionne pas, quand on veut lire le datareader renvoyé, il indique qu'on ne peut pas car il est fermé !
sylv2001 Messages postés 6 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 24 février 2004
23 févr. 2004 à 09:28
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?
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
23 févr. 2004 à 23:28
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
24 févr. 2004 à 11:20
étant débutant en asp.net, je ne vois pas ou ajouter cette ligne dans ton code. pourrai-tu m'aider?

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.