Probleme de connexion a la BD utilisant MSDE

[Résolu]
Signaler
Messages postés
11
Date d'inscription
mercredi 15 septembre 2004
Statut
Membre
Dernière intervention
3 mars 2005
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Bonjour,

Je doit me connecter a une base de données afin de d'afficher dynamiquement un dropdownMenu et un datagrid, mais lorsque que j'execute la page, j'ai le message suivant.

" La propriete de la connexion n'a pas ete initialisee."

Je travaille avec Webmatrix et MSDE.
J'ai creer un compte pour MSDE avec acces a la abse nommee SDS.

Voila le code correspondant :

Sub Page_Load(sender As Object, e As EventArgs)
Dim myConnection As New SqlConnection
myConnection.ConnectionString "Server'BOB' ; Initial Catalog 'SDS' ; uid 'benjamin' ;
password = 'benjaminpass'"
myConnection.Open()
ChargerListeFamilles()
AfficherStocksProduits()

End Sub

Sub ChargerListeFamilles()

Dim myConnection As SqlConnection
Dim myCommand As SqlCommand
Dim myReader As SqlDataReader
Dim SQL As String

myConnection =
CType(Session("myConnection"),SqlConnection)

SQL = "SELECT * FROM FamilleProduit"

myCommand = new SQLCommand(SQL,myConnection)

myReader = myCommand.ExecuteReader()

ListeFamilles.DataSource = myReader
ListeFamilles.DataValueField = "ID_FamilleProduit"
ListeFamilles.DataTextField = "Nomfamille"
ListeFamilles.DataBind()

myReader.Close()

End Sub

Sub AfficherStocksProduits()

Dim myConnection As SqlConnection
Dim myCommand As SqlCommand
Dim myReader As SqlDataReader
Dim FamilleID As String

myConnection =
CType(Session("myConnection"),SqlConnection)

FamilleID = Listefamilles.SelectedItem.Value

myCommand = new SQLCommand("EtatStock",myConnection)
myCommand.CommandType = CommandType.StoredProcedure
myCommand.Parameters.Add("@FamilleID",SqlDbType.Int).Value
= FamilleID

myReader = myCommand.ExecuteReader()

EtatStock.DataSource = myReader
EtatStock.DataBind()

myReader.Close()

End Sub

Si quelqu'un a dejaa rencontré le probleme et peut m'indiquer la marche a suivre, je veux bien, parce que la ca commence a ........

Merci.

Benjamin.

3 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Je comprend pas pourquoi tu recherches ta connection dans les variables session :-/



Si tu veux avoir accés, il faut déclarer ta connexion en dehors de ton sub page_load



Private myConnection As New SqlConnection




Sub Page_Load(sender As Object, e As EventArgs) myConnection.ConnectionString "Server'BOB' ; Initial Catalog 'SDS' ; uid 'benjamin' ;
password = 'benjaminpass'"
myConnection.Open()
ChargerListeFamilles()
AfficherStocksProduits()

End Sub


En théorie ca devrait deja etre un peu mieux





<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
J'ai pas le courage de lire tout le code, mais ce que j'ai vu, ca a
l'air d'etre le meme problème, tu te sers de variables qui ne sont pas
déclarés, quand tu te sers de ta connexion, elle est certe déclaré dans
le global.asax mais nullement la ou tu veux, il faut donc que tu
l'instancies, sinon il sera null et ca ne va pas passer



Pour ton problème, je ferais dans le session_start

dim mConn as new sqlconnection 'blablabla

session("conn") = mconn



et la ou tu veux ta connexion



dim mConn as sqlconnection = ctype(session("conn"),sqlconnection)



Je suis pas sur que ca marche, mais je te déconseil cette méthode c'est
beaucoup trop lourd, et ta connexion sera ouvert tant que le user sera
sur le site :-/



Il vaut mieux utiliser une solution plus complexe mais plus propre,
soit tu continue a faire dans le meme principe, donc tu dérive ta page,
tu overrides le oninit, et le onprerender, tu ouvres et ferme une
connexion, puis tu fais dériver la page dans laquelle tu travailles par
ta nouvelle page, ensuite tu peux te servir de ta connexion, elle sera
ouverte et fermé à chaque requete.



Une autre méthode que je te conseil plus, c'est de faire une classe qui
regroupe tout tes appelles à ta bdd, genre une fonction getarticles
etc... et dans ces fonctions tu gères tes connexions.


<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
11
Date d'inscription
mercredi 15 septembre 2004
Statut
Membre
Dernière intervention
3 mars 2005

Ok, imppecable, je te remercie encore une fois.



Toutefois, si je peux abuser, mon objectif final est d'utiliser le
fichier Global.asax, de maniere a ouvrir une connexion en debut de
session d'un utilisateur et de la fermer en fin de session. Et la je
retombe sur le meme probleme, on me dit que je n'ai pas initialisée la
connection.

Je pensais que toutes les instances ou vriables dans le fichier Global.asax etait accessibles par tous les fichiers.



Voici le fichier Global.asax :



<%@ Import NameSpace="System.Data.SqlClient"%>

<script language="VB" runat="server">





Sub Sessions_Start(Sender As Object, E As EventArgs)



Dim myConnection As SqlConnection

myConnection = new SqlConnection()


myConnection.ConnectionString "Server 'BOB' ; Initial Catalog =
'SDS' ; uid = 'benjamin' ;
password = 'benjaminpass'"

myConnection.Open()

Session("myConnection") = myConnection

End Sub



Sub Session_End(Sender As Object, E As EventArgs)

dim myConnection As SqlConnection

myConnection = CType(Session("myConnection"),SQLConnection)

myConnection.Close()

End Sub

</script>







et le fichier Stock.aspx :



<%@ Page Language="VB" Debug="true" %>

<%@ Register TagPrefix="SDS" TagName="NavBar" Src="NavBar.ascx" %>

<%@ import Namespace="System.Data" %>

<%@ import Namespace="System.Data.SqlClient" %>

<script runat="server">





Sub Page_Load(sender As Object, e As EventArgs)

ChargerListeFamilles()

AfficherStocksProduits()

End Sub





Sub ChargerListeFamilles()



Dim myConnection As SqlConnection

Dim myCommand As SqlCommand

Dim myReader As SqlDataReader

Dim SQL As String



MyConnection = CType(Session("myConnection"),SqlConnection)



SQL = "SELECT * FROM FamilleProduit"

myCommand = new SQLCommand(SQL,myConnection)

myReader = myCommand.ExecuteReader()

ListeFamilles.DataSource = myReader

ListeFamilles.DataValueField = "ID_FamilleProduit"

ListeFamilles.DataTextField = "Nomfamille"

ListeFamilles.DataBind()

myReader.Close()

End Sub





Sub AfficherStocksProduits()



Dim myConnection As SqlConnection

Dim myCommand As SqlCommand

Dim myReader As SqlDataReader

Dim FamilleID As String



MyConnection = CType(Session("myConnection"),SqlConnection)



FamilleID = Listefamilles.SelectedItem.Value

myCommand = new SQLCommand("EtatStock",myConnection)

myCommand.CommandType = CommandType.StoredProcedure

myCommand.Parameters.Add("@FamilleID",SqlDbType.Int).Value = FamilleID

myReader = myCommand.ExecuteReader()

EtatStock.DataSource = myReader

EtatStock.DataBind()

myReader.Close()

End Sub





</script>

<html>

<head>

<title>Savons du soleil</title>

<link href="SDS.css" type="text/css" rel="stylesheet" />

</head>



<SDS:NAVBAR id="MyNavBar" SelectedIndex="1" runat="server"></SDS:NAVBAR>





<form runat="server">




Consultation de l'état du stock par famille de
produits











&nbsp; FAMILLE&nbsp;&nbsp;,










</form>






</html>



Benjamin