class perso pour une connexion à SQL server
Bonjour,
J'ai en charge le développement d'une gestion commerciale (devis, facture, gestion du stock...). J'ai choisi de le développer en VB.net avec une base SQL server. Pour bien débuter le projet, je suis en train de faire des test de connection à la base de données. Dans un projet précédent je perdai beaucoup de temps à me connecter (très souvent) à ma base SQL et je souhaiterais avoir votre avis à ce sujet. Serait-il possible de se créer une class perso pour cela ?
Ma problématique c'est que je vais devoir interroger une grosse base de données avec quelques fois des 2 ou 3 requêtes imbriquées et très souvent.
J'utilise "System.Data.SqlClient" pour me connecter à la base SQL, et une fois le sqlcommand et le sqlconnection géré plus un try pour tester si tout se passe bien, ça fait vite une dizaine de lignes à copier/coller juste pour interroger la base et changer seulement la requête SQL et la réception des données. Je me demandais alors si il n'était pas possible de se créer une class. Par exemple comme ceci :
Déclaration de la class mgcDB :
------------
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Imports System.Data.SqlClient
Public Class mgcDB
Public DBSource = "data source=SQLEXPRESS;initial catalog=BASE_TEST;Uid=test;Pwd=test;Connection Timeout=100000; Pooling=False"
Public Function ConnectionExecuteReader(ByVal sql)
Dim cnx_sql_base As New SqlConnection(DBSource)
Dim cmd_sql_base As New SqlCommand()
cmd_sql_base.Connection = cnx_sql_base
cmd_sql_base.CommandText = sql
cnx_sql_base.Open()
Dim result = cmd_sql_base.ExecuteReader(CommandBehavior.CloseConnection)
Return result
End Function |
------------
Ca fonctionne si je crais par exemple une requette imbriquée dans mon form1 comme ceci :
----------
' J'importe ma class perso
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Imports MGC.mgcDB
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim myconnection = New mgcDB
Dim result = myconnection.ConnectionExecuteReader("select count(*) from Table")
Do While result.Read
Dim tmp = result.GetValue(0)
Dim result2 = myconnection.ConnectionExecuteReader("select * from Table")
Do While result2.Read
Dim tmp2 = result2.GetValue(0)
MsgBox(tmp & " => " & tmp2)
Loop
Loop
myconnection.Close()
End Sub |
----------
J'ai bien mes deux requêtes imbriqués qui se connectent à ma base SQl server avec un minimum de code (grâce à ma class perso). De plus je pourrait rajouter un "try" dans ma class pour gérer les erreurs de connection. Le problème c'est que je ne pense pas que "myconnection.Close()" ferme correctement la connection à ma base de données (je la ferme pas dans ma class), et dans ce cas je risque de vite avoir des problème de performence ou de mémoire. L'application devra être utilisé par une centaine d'utilisateurs en même temps.
Qu'en pensez vous ? Et-il possible de créer une class perso pour se connecter à SQL server en un minimum de code ?
Merci pour votre aide ;-)
PS : ah oui au fait, j'ai longtemps hésité à utiliser PHP, cShapre ou VB.net pour ce projet. J'ai choisi VB.net car il est simple à utiliser et on peut rapidement créer des formulaires ou des exports word, excel, pdf... ce qui est parfait pour du développement "métier".