DevTrain

Autor: Tobi Ulm

Datenbanksuche mit dem ASP.NET DataReader

Was lernen Sie in diesem Sample:
- Wie man mit ADO.NET eine Datenbank Verbindung erzeugt
- Wie man mit ADO.NET ein ADOCommand benutzt
- Wie Sie mit dem DataReader arbeiten

Die Sample Seite soll es ermöglichen durch Eingabe eines Suchbegriffes in eine TextBox eine Tabelle zu durchsuchen.
Ich baue mir also eine ASPX Seite mit einer TextBox sowie einem Button:
<asp:TextBox id=TextBox1 runat="server" Width="162" Height="23"></asp:TextBox>
<asp:Button id=Button1 runat="server" Width="49" Height="21" Text="Go!">

Als nächstes bauen wir die Suche in der Datenbank.
Die Suche soll natürlich erst ausgeführt werden, nachdem die ASPX Seite neu geladen wurde und deshalb baue ich die DB Suche in den PagePostBack Event ein:

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

//

// Evals true first time browser hits the page

//

}

else
 {
  String strConn = "Provider= SQLOLEDB.1;DataSource=localhost;uid=sa; pwd=; Initial Catalog=pubs;";
  ADOConnection connSQL = new ADOConnection (strConn);
  ADOCommand adoCmd = new ADOCommand ("SELECT * FROM authors WHERE au_lname LIKE '" + TextBox1.Text + "%'", connSQL);
  ADODataReader drAuthors;
  try
  {
   connSQL.Open();
   adoCmd.Execute(out drAuthors);
   if (drAuthors != null)
   {
    Response.Write("<table cellspacing="2" cellpadding="2" border="2">");
    Response.Write("<tr><th>Vorname</th><th>Nachname</th></tr>");
    while (drAuthors.Read())
    {
     Response.Write("<tr><td>" + drAuthors["au_fname"].ToString() + "</td>");
     Response.Write("<td>" + drAuthors["au_lname"].ToString() + "</td></tr>");
    }
    Response.Write("</table>"); 
   }
   
  }
  catch (Exception d)
  {
   Response.Write(d.ToString());
  }
  finally
  {
   if (connSQL.State==DBObjectState.Open)
   {
    connSQL.Close();
   }
  } 
 }

Als erstes wird der ConnectionString für die Datenbank erzeugt, der dann anschließend dem neu erzeugten ADOConncetion Objekt übergeben wird. Diese ADOConnection ist meine Leitung zu Datenbank.
Nachdem ich nun eine Verbindung zu Datenbank habe brauche ich noch irgendwas, um Daten zurück zu bekommen. Aus diesem Grund brauche ich ein ADOCommand dem ich einen normalen SQL Query String übergebe.
Das Command wird hoffentlich richtig ausgeführt und ich muss nun ein Objekt erzeugen, in dem ich die Ergebnismenge irgendwie halten kann. Sie haben hier mit ADO.NET die Qual der Wahl: DataSet oder für einfaches visualisieren ohne Daten zu verändern den DataReader. Ich verwende letzteres da der DataReader seine Vorteile hat: Er ist einfach zu handhaben und benötigt weniger Speicher im Server als zum Beispiel das DataSet Objekt
Im try Block öffne ich nun die Verbindung zum Server und gebe dem ADOCommand meinen DataReader als das Objekt an, das die Daten zurück bekommen soll.

Nachdem die Daten erfolgreich übergeben worden sind gebe ich die Daten auf der Seite selbst aus. Das Iterrieren durch die Daten übernimmt an dieser Stelle der Befehl Read() des DataReader Objektes.
Ich gebe noch die Felder an die wir benötigen und fertig!


Erfasst am: 21.05.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=455
© Copyright 2003 ppedv AG - http://www.ppedv.de