Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Connessione al Database
giovedì 02 agosto 2012 - 12.53
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 4.0
|
Visual Studio 2010
|
Access (.mdb)
paolo973
Profilo
| Senior Member
302
messaggi | Data Invio:
gio 2 ago 2012 - 12:53
ho scritto un file funzioni.cs ed inserito nella cartella App_Code.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Xml.Serialization;
public class funzioni: System.Web.UI.Page
{
public OleDbDataReader recuperaDataByQuery(string query)
{
String connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("mdb-database/mydb.mdb");
OleDbConnection cn = new OleDbConnection(connString);
cn.Open();
OleDbCommand cmd = new OleDbCommand(query, cn);
OleDbDataReader aReader = cmd.ExecuteReader();
// cn.Close();
return aReader;
}
}
l'unico metodo implementato è recuperaDataByQuery.
Questo metodo deve accettare una query (ad esempio Select * from mytb ...) e ritornarmi tutti i dati trovati.
la mia domanda è:
la connessione cn al database resta aperta?
se la chiudo prima del return ottengo
Exception Details: System.InvalidOperationException: Invalid attempt to call Read when reader is closed.
cosa è meglio fare?
Fractals
Profilo
| Newbie
7
messaggi | Data Invio:
gio 2 ago 2012 - 14:54
Ciao, non sono un grande esperto di vb.net e come te sto imparando però ti posso che la connessione deve rimanere aperta per poter interrogare il datareader altrimenti esso non è piu disponibile...
Se vuoi lavorare con i dati "off-line" devi usare i dataset e datatable...
oppure costruisci una classe connecciot che inizializzando l'oggetto effettui la connessione, setta una proprietà della classe come instanza di connessione in modo che sia sempre disponibile (ovvero cio che ritorna dal metodo conneccion) e infine il metodo disconnessione che invochi sono quando hai finito di fare tutto
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
sab 4 ago 2012 - 14:55
>la mia domanda è:
>la connessione cn al database resta aperta?
la connessione col database, col codice scritto, resta aperta e non è una prassi da seguire. La connessione dovrebbe in questi casi rimanere aperta solo per il tempo durante il quale contatti il database.
Quindi solo per il tempo dell'esecuzione della query. Poi andrebbe chiusa quanto prima.
Di certo ti consiglio di usare la USING (C#):
http://msdn.microsoft.com/en-us/library/yh598w02.aspx
La using, gestisce in autonomia close e dispose della connessione.
Utilizza sempre quello statement quando gestisci accesso I/O file e connessioni.
ciao
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
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 !