Connection à un sql server et requetes...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 270 fois - Téléchargée 36 fois

Contenu du snippet

Ce petit bout de code permet d'ouvrir une connection a un serveur SQL Server, et d'y effectuer des requetes en tout genre (selections, insertions, modifications, suppressions, ...). Le petit probleme est que les requetes parametrees ne sont pas valides (pourquoi, je ne sais pas encore). D'ailleurs si quelqu'un a une solution, merci). Sinon, pas de probleme rencontre. Utile pour les debutants...
Un seul truc a ajouter : un sub Main() qui appelle le subMain(), du genre :
Sub Main()
subMain()
End Sub
...pour faire simple...

Source / Exemple :


Imports System.Data
Imports System.Data.SqlClient
' Debut du Module SQL Server ---------------------------
Public Module ModuleBase
    Public SQL_Server As String = "nom du serveur SQL"
    Public SQL_Base As String = "nom de la base de donnees"
    Public req As String = ""
    Public Colonne As String
    Public mode As String
    Public table As String
    Public code As String
    Public valeur_Insert As String
    Public condition_Delete As String
    Public valid As String
    Public selection As String
    Public test As String

    ' Renvoie un Datareader à partir de la requête transmise.
    Public Function SQL_Reader(ByVal Req_SQL As String) As SqlDataReader
        Dim oConn As SqlConnection
        oConn = New SqlConnection()
        Try
            oConn.ConnectionString = "server=" & SQL_Server & ";database=" & SQL_Base & ";trusted_connection=true"
'Pour sauter la verification d'utilisateur
            oConn.Open()

            Dim myCommand As SqlCommand = New SqlCommand(Req_SQL, oConn)
            Dim monSQL_Reader As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
            SQL_Reader = monSQL_Reader
            'Lire infos tant qu'il y en a.
            Do While monSQL_Reader.Read()
                System.Console.WriteLine(monSQL_Reader("CODE").ToString())
                System.Console.WriteLine(monSQL_Reader("NOM").ToString())
                'les retourner
            Loop
        Catch err As Exception
            MsgBox("Il y a eu une erreur de connection (SQL_Reader) : " + err.Message)
        Finally
            oConn.Close()
            oConn = Nothing
        End Try
    End Function

    ' Exécute directement la requête transmise sans renvoyer de résultat.
    Public Function SQL_Execute(ByVal Req_SQL As String)
        Dim oConn As SqlConnection
        oConn = New SqlConnection()
        Try
            oConn.ConnectionString = "server=" & SQL_Server & ";database=" & SQL_Base & ";trusted_connection=true"
            oConn.Open()
            Dim myCommand As SqlCommand = New SqlCommand(Req_SQL, oConn)
            myCommand.ExecuteNonQuery()
            MsgBox("Executée...\n")
        Catch err As Exception
            MsgBox("Il y a eu une erreur de connection (SQL_Execute) : " + err.Message)
        Finally
            oConn.Close()
            oConn = Nothing
        End Try
    End Function

    ' Teste si le champs envoyé est null et dans ce cas lui attribue la valeur de Base
    Public Function TestNull(ByVal Champs As Object, _
                                ByVal ValDefaut As Object)

        If IsDBNull(Champs) Then
            TestNull = ValDefaut
        Else
            TestNull = Champs
        End If
    End Function

    'Fonction de requete générale : sélectionne la fonction à lancer selon le premier parametre qui est le mode (insert, delete)
    Public Function MyRequest(ByVal theMode As String, _
                                    ByVal nomTable As String, _
                                    ByVal CodeOuColonne As String, _
                                    ByVal valeur As String)
        Select Case (theMode)
            Case "insert"
                MyInsert(nomTable, CodeOuColonne, valeur)
            Case "delete"
                MyDelete(nomTable, CodeOuColonne, valeur)
        End Select
    End Function

    'Fonction d'insertion
    Public Function MyInsert(ByVal nomTable As String, _
                                            ByVal theCode As String, _
                                            ByVal theNom As String)
        Try
            req = "insert into " & nomTable & " values (" & theCode & ", " & theNom & ")"
            SQL_Execute(req)
            MsgBox("Try : Insertion effectuée...")
        Catch err As Exception
            MsgBox("Catch Insert: pas marché !")
        Finally
            MsgBox("Finally Insert")
        End Try
    End Function

    'Fonction de suppression
    Public Function MyDelete(ByVal nomTable As String, _
                                            ByVal nomColonne As String, _
                                            ByVal valeur As String)
        Try
            req = "delete from " & nomTable & " where " & nomColonne & "=" & valeur & ""
            SQL_Execute(req)
            MsgBox("Try : delete OK effectuée...")
        Catch err As Exception
            MsgBox("Catch Delete: pas marché !")
        Finally
            MsgBox("Finally Delete")
        End Try
    End Function

    Public Function MySelect(ByVal nomTable As String, _
                                            ByVal quoi As String, _
                                            ByVal theColonne As String, _
                                            ByVal test As String)
        req = "select " & quoi & " from " & nomTable
        If (theColonne <> "") Then
            req &= " where " & theColonne & "=" & test & ""
        End If

        Try
            SQL_Reader(req)
        Catch err As Exception
            MsgBox("Catch Select: " + err.Message)
        Finally
        End Try
    End Function

    Public Function sortir() As Boolean
        Console.WriteLine("Quitter ? Y/N : ")
        valid = Console.ReadLine
        valid = valid.ToUpper

        While (valid <> "Y") And (valid <> "N")
            Console.WriteLine("Invalid Character ! Y/N  :")
            valid = Console.ReadLine
            valid = valid.ToUpper
        End While

        Select Case (valid)
            Case "Y"
                sortir = True
            Case "N"
                sortir = False
        End Select
    End Function

    Public Function MySelect()
        Console.WriteLine("Champs à afficher : ")
        selection = Console.ReadLine
        Console.WriteLine("Table ? : ")
        table = Console.ReadLine
        Console.WriteLine("Nom de colonne : ")
        Colonne = Console.ReadLine
        Console.WriteLine("Valeur de test : ")
        test = Console.ReadLine
        Try
            MySelect(table, selection, Colonne, test)
        Catch err As Exception
            MsgBox("Erreur dans le select : " + err.Message)
        Finally
        End Try

    End Function

    Public Function InsertOrDelete(ByVal mode As String)
        Console.WriteLine("Table ? : ")
        table = Console.ReadLine
        If (mode = "I") Then
            Console.WriteLine("Code ? :")
            code = Console.ReadLine
            code = code.ToUpper
            mode = "insert"
            Console.WriteLine("Valeur ? :")
            valeur_Insert = Console.ReadLine
            MyRequest(mode, table, code, valeur_Insert)
        Else
            mode = "delete"
            Console.WriteLine("Colonne de test ? : ")
            Colonne = Console.ReadLine
            Console.WriteLine("Condition ? : ")
            condition_Delete = Console.ReadLine
            MyRequest(mode, table, Colonne, condition_Delete)
        End If
    End Function

    Public Function reqManu()
        Console.WriteLine("texte de la requete ? :")
        req = Console.ReadLine
        Try
            SQL_Reader(req)
        Catch err As Exception
            MsgBox("Erreur de synthaxe sur la requete ... ")
        Finally

        End Try
    End Function

    Public Function menu()
        Console.WriteLine("Entrer le mode :")
        Console.WriteLine("s->Select, i->Insertion, d->Delete, m->req manu, q->quitter")
        mode = Console.ReadLine
        mode = mode.ToUpper
    End Function

    Public Function subMain()
        menu()
        Do
            Select Case (mode)
                Case "S"
                    MySelect()
                Case "I", "D"
                    InsertOrDelete(mode)

                Case "Q"
                    If sortir() Then
                        Exit Function
                    Else
                        Exit Select
                    End If

                Case "M"
                    reqManu()

                Case Else
                    Console.WriteLine("Mode non valide ! ")
            End Select
            Console.WriteLine("")
            menu()
        Loop
    End Function
End Module
'------- Fin du Module SQL Server ---------------------------

Conclusion :


Un grand merci aux premieres sources, et surtout a Totoff' !

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
lundi 12 octobre 2009
Statut
Membre
Dernière intervention
7 février 2012

Bonjour, je veux que vous me proposiez une requête en sql qui affiche les données selon le caractère saisi de A à Z et les affiche dans un datagrid. comment réalisé la même opération dans le cas de Dataset? Merci!
Messages postés
28
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
27 juillet 2011

Autant pour moi ! Je n'avais pas vu que c'était un source .net ... forcément dans un projet VB6, le copier/coller génère beaucoup d'anomalies (les lignes en rouges !).
Messages postés
2
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
3 mai 2010

Vraiment à l'air delecieux ce Source
Merci Bien;
Messages postés
7
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
2 mai 2005

Les lignes en rouge . . . . . . . . ? Peux-tu être clair ? Merci pour la note et la remarque, je pense que ce n'est pas nécessaire (désolé aux webmasters du forum).

Mettez ce code dans un vrai projet VB (.NET pour moi), n'oubliez pas d'ajouter les références SQL au projet, sinon le compilateur n'arrive pas à interpréter les lignes concernant les commandes SQL, et surtout, dès le début, les objets SQL ne sont pas reconnus.

Bonne prog.
Messages postés
28
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
27 juillet 2011

Pas très opérationel ce source ... Avec un copier/coller, il y a pas mal de travail pour corriger les erreurs (les lignes en rouge) ...

Si tu as mis ce code dans un but pédagogique ... c'est raté !!!

Note : 2/10
Afficher les 11 commentaires

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.