Connessione a DB SQL-SERVER

venerdì 11 febbraio 2005 - 18.02

overflow80 Profilo | Newbie

Buonasera a tutti, sono sempre qua a cercare di capire qualcosina con il nuovo asp.net
Ecco il mio problema.
Ho costruito un WebService dove all'interno metto le mie funzioni per connettermi e disconnettermi:

SOTTO IL CODICE

Public connstring As String = "Data Source='NOMEPC'; initial catalog='DATABASE'; User Id='NN'; PassWord=;"
Public oconn As New SqlConnection(connstring)
Public oCMD As SqlCommand = oconn.CreateCommand
Public DataReader As SqlDataReader

Public Sub conn()
oconn.Open()
End Sub

Public Sub disconn()

oconn.Close()
'DataReader.Close()
oconn.Dispose()

End Sub

Nel mio web form istanzio la connessione con il nome della classe "Dim connection As New connect"

nel web form ho due DropDownList alle quali gli voglio associare i dati ricavati da DATABASE

quindi nella Page_load chiamo due procedure una dopo l'altra per caricarmi le DropDownList:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Inserire qui il codice utente necessario per inizializzare la pagina
caricaDrop1()
caricaDrop2()
End Sub

ed ecco le mie due procedure

Private Sub caricaDrop1()
Try
connection.conn()
connection.oCMD.CommandText = "SELECT DESCRIZIONE FROM TABELLA1"
connection.DataReader = connection.oCMD.ExecuteReader
If connection.DataReader.HasRows Then
Drop1.DataSource = connection.DataReader
Drop1.DataTextField = "DESCRIZIONE"
Drop1.DataBind()
End If
connection.disconn()
Catch ex As Exception
Response.Redirect("default_error.aspx")
End Try
End Sub

Private Sub caricaDrop2()
Try
connection.conn()
connection.oCMD.CommandText = "SELECT NOME FROM TABELLA2"
connection.DataReader = connection.oCMD.ExecuteReader
If connection.DataReader.HasRows Then
Drop2.DataSource = connection.DataReader
Drop2.DataTextField = "NOME"
Drop2.DataBind()
End If
connection.disconn()
Catch ex As Exception
Response.Redirect("default_error.aspx")
End Try
End Sub

a questo punto la prima DropDownList me la carica correttamente mentre la seconda mi genera l'eccezzione
Catch ex As Exception
Response.Redirect("default_error.aspx")
e togliendo la gestione dell'eccezzione mi viene fuori l'errore :"La proprietà ConnectionString non è stata inizializzata."

Questo è quanto.
Grazie a chiunque perderà del tempo per risolvere il mio quesito.

19018 Profilo | Expert

Ciao...allora prima di tutto ti consiglio di utilizzare il blocco try - catch -finally quando apri e chiudi una connessione e la chiusura della connessione le devi sempre mettere nel finally...questo è che altro un consiglio perchè per come hai fatto tu se si verifica un errore prima della chiusura c'è la possibilità che la connessione non venga chiusa!
Per quanto riguarda l'erroe credo che l'errore dipenda dall'evento PostBack del form...ogni volta che in qualche modo chiami un bind o aggiorni qualche elemento del form viene scaturito questo benedetto evento che riassegna tutte le variabili globali (specialmente quelle contenute nell'evento load della pagina) facendoti perdere la continuità con lo stato precedente..per questo nel load della pagina si una if (not isPostBack) ... tuo codice...end if Prova a inserire questa struttura di controllo nel load e studia meglio l'evento postback perchè la causa dell'erroe è quasi certamente questo evento!ciao!

overflow80 Profilo | Newbie

Ho provato a mettere il codice If Not (Page.IsPostBack) Then MIO CODICE End If ma non succede niente.
Però ho notato che togliendo il dispose dalla disconnessione le due combo mi vengono caricate, però.....non uso il dispose

19018 Profilo | Expert

Si,il dispose mi era sfuggito...non devi usarlo se dopo vuoi usare la stessa connessione, perchè se lo usi vieni distrutto l'oggetto connection,devi solo usare close.Ciao

overflow80 Profilo | Newbie

Grazie ancora...
Infatti non usando il dispose tutto funziona tranquillamente
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5