Hallo,
man muss nicht.
Beispielsweise ist es möglich, die Datenbankverbindung aufzubauen (z.B. auf einer Login-Seite) und das Verbindungsobjekt im Sessionobjekt zu speichern.
Danach kann man von in den weiteren Seiten einfach das Verbindungsobjekt aus „Session“ auslesen und verwenden. Ohne Authentifizierung kann mna auch eine Klasse anlegen (Singleton) und diese verwenden.
Beispiel zur Speicherung in Session:
- Neue Klasse (z.B. ODBC_Conn), übe die eine Verbindung zur DB aufgebaut wird (Benutzername und Passwort werden als Strings übergeben):
…
public ODBC_Conn(string User , string Password, out int RetCode)
{
// Die Funktion gibt 1 bei erfolgreichem Connect zu DB und
// -1 bei einem Fehler / falscher Authentifizierung wieder
RetCode = EstablishConnection(User,Password);
}
private int EstablishConnection(string strUID , string strPWD)
{
string strDriver = „{Adaptive Server Anywhere 9.0}“;
string strConnection = „DRIVER=“ + strDriver + „;“
- „ENG=db_serv;“
- „CommLinks=tcpip(ServerPort=45589);“
- „UID=“ + strUID + „;“
- „PWD=“ + strPWD + „;“;
m_Connection = new OdbcConnection(strConnection);
try
{
m_Connection.Open();
}
catch
{
return -1;
}
…
- Klasse in Login benutzen
…
ODBC_Conn ConnSession = new ODBC_Conn(txtBenutzername.Text , txtKennwort.Text, out intEstSuccess);
…
if (intEstSuccess >= 0) // Connect zur Datenbank war erfolgreich
{
Session[„SessionCon“] = ConnSession;
…
}
- Session-Objekt in Code-Behind der weiteren Seiten auslesen:
public class positionen : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label WasAuchImmer;
ODBC_Conn ConnPage;
…
}
private void Page_Load(object sender, System.EventArgs e)
{
ConnPage = (ODBC_Conn) Session[„SessionCon“];
…
}
Und „ConnPage“ verwenden:
string RowSQLString = „SELECT irgendwas FROM tabelle“;
OdbcCommand RowCommand = new OdbcCommand(RowSQLString,ConnPage.m_Connection);
OdbcDataReader RowReader = RowCommand.ExecuteReader();
RowCommand.Dispose();
Gruß
Hauke