Connection à un sql server et requetes...

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

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.