none
Datenzugriff (SQL-Datenbank) bei ASP.NET-Web Forms-Projekt? RRS feed

  • Frage

  • Hallo, 

    bin gerade dabei mich mit ASP.NET auseinanderzusetzen bzw. einzuarbeiten.

    ICh habe auf meinem Visual Studio 2012 (RC) auf Windows 7 eine Website für ASP.NET-Web Forms (Visual C#) erstellt (DATEI -> Neu -> Website -> Website für ASP.NET-Web Forms (Visual C#)).

    Ich starte dann das Projekt mit dem 'grünen Dreieck' Internet-Explorer und kann mich auf der Website einloggen. Ich habe schon herausgefunden das die Login-Daten in dieser LocalDB "Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-WebApplication1-1234586789abcde;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-WebApplication1-1234586789abcde.mdf" gespeichert werden.

    Nur, ich finde in diesem Web-Projekt keine Zeile Code, wo auf die Datenbank zugegriffen wird. Könnt ihr mir da helfen, oder sagen wo ich das finde?

    Gruß

    Guenter


    Dienstag, 10. Juli 2012 07:40

Antworten

  • Hallo Guenter,

    durch die Verwendung von sog. "Blackboxes", welche leider auch von den in VS enthaltenen Anwendungsvorlagen gerne und häufig verwendet werden, kann dir eigentlich auch niemand sagen, wie in einem solchen Fall die Daten von a nach b und zurück kommen. Das handlen diese Controls intern automatisch.

    Daher auch der Hinweis, dass man auf diese Controls verzichten sollte, denn individuelle Änderungen sind nicht und nur mit sehr hohem Aufwand möglich.

    Einige mögliche Wege hab ich dir ja aufgezeigt.

    Bzgl. deines Gefühls, dass niemand deine Frage tatsächlich gelesen hat: Ich denke schon, dass die Antwortenden die Frage gelesen und verstanden haben. Nur ist es aufgrund der o.g. "Blackboxen" nicht wirklich erklärbar, wie das UI die Daten in die DB schreibt und umgekehrt. Daher sind die Hinweise IMHO schon so in Ordnung gewesen, auch wenn Sie dir letztendlich nicht dabei geholfen haben, das zu verstehen.

    Zudem arbeiten die allermeisten Entwickler eben nicht mit den Vorlagen und schon gar nicht mit den Controls wie bspw. SqlDataSource oder gar mit dem Standard ASP.NET MembershipProvider, ... Eben weil man hier nicht eingreifen kann und sich an (ziemlich komplizierte) Vorgaben halten muss, damit überhaupt was funktioniert.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 27. Juli 2012 10:07
    Moderator

Alle Antworten

  • Nur, ich finde in diesem Web-Projekt keine Zeile Code, wo auf die Datenbank zugegriffen wird. Könnt ihr mir da helfen, oder sagen wo ich das finde?

    Hallo Guenter,

    das erfolgt in ASP.NET über die Provider, in dem Falle über die AspNetSqlMembershipProvider, AspNetSqlProfileProvider und AspNetSqlRoleProvider. In der web.config wirst Du die auch finden und das dort bei denen wieder auf den Connection "ApplicationServices" referenziert wird.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Dienstag, 10. Juli 2012 15:45
  • Danke Olaf,

    die web.config Datei habe ich gefunden. Und die Connection darin zur Datenbank auch.

    Was ich aber nach wie vor nicht finde, ist woher weiss ein UI-Feld (z.B. <asp:TextBox runat="server" ID="UserName" />) auf welches Feld in welcher Tabelle zugegriffen werden muss. Kann ich das einstellen, und wenn ja wo, in dem Webprojekt finde ich leider keine Provider wo ich eine solche Zuordnung sehen kann.

    Auszug aus meiner web.config

    <profile defaultProvider="DefaultProfileProvider">
    <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
    </providers>
    </profile>
    <membership defaultProvider="DefaultMembershipProvider">
    <providers>
      <add name="De ...

    Gruß

    Guenter

    Mittwoch, 11. Juli 2012 08:11
  • Hallo Guenter,

    das läuft alles über die Asp Controls und DataBinding, siehe Dir doch mal die Register.aspx an.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Mittwoch, 11. Juli 2012 15:24
  • P.S.: Siehe auch Walkthrough: Using Forms Authentication in ASP.NET MVC, da wird auch noch mal auf das Thema eingegangen.

    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Mittwoch, 11. Juli 2012 16:22
  • Hallo Guenter,

    Nur, ich finde in diesem Web-Projekt keine Zeile Code, wo auf die Datenbank zugegriffen wird. Könnt ihr mir da helfen, oder sagen wo ich das finde?

    Vielleicht hilft dir noch der Hinweis, dass all die
    'magischen' Datenbankzugriffe natürlich irgendwo
    deklariert sind und auch angepasst werden können.

    Such mal nach einer 'Machine.config'-Datei auf deinem
    Rechner oder dem Server; Da findest du die standard-
    Einstellungen für den ganzen IIS Web Server.

    Zwei Auszüge zeigen die Verknüpfung zwischen
    default -Provider und -Datenbank und -Verknüpfung.
       <connectionStrings>
        <add name="LocalSqlServer" ...
       <membership>
          <providers>
            <add name="AspNetSqlMembershipProvider"
                 connectionStringName="LocalSqlServer" ...
     Mein Tipp:
    Überschreibe in deiner web.config Datei alle default-Einstellungen,
    also lösche alle vererbten Elemente zuerst mit <clear />!
       <connectionStrings>
        <clear />
        <add name="MyOwnSqlServer" ...

    Danach ist alles selbstbestimmt.

    Viele Grüße

    Frederic
    .

    Mittwoch, 11. Juli 2012 21:39
  • Danke, nach 3 Tagen ist immer noch Unklarheit,

    wie ich von der UI auf die Datenbank (das mit der Datenbank ist klar) in die Tabelle und in die Spalte komme.

    Hat sich erledigt.

    Donnerstag, 12. Juli 2012 08:51
  • Danke, nach 3 Tagen ist immer noch Unklarheit,

    wie ich von der UI auf die Datenbank (das mit der Datenbank ist klar) in die Tabelle und in die Spalte komme.

    Hat sich erledigt.

    Hallo Guenter Petermann,

    Es wäre schön und hilfreich, wenn Du posten würdest wie es funktioniert hat, denn dann profitieren unter Umständen andere mit dem gleichen Problem davon.

    Danke und Grüße,
    Robert



    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 25. Juli 2012 12:06
    Moderator
  • Es hat eben nicht funktioniert.

    Mittlerweile arbeite ich mit einer anderen (Nicht Microsoft) Webtechnolgie.

    Danke & Grüße

    Guenter

    Donnerstag, 26. Juli 2012 13:32
  • Hallo Guenter,

    wie in jeder Technologie muss man, um zu programmieren, auch mit Code arbeiten. Der Fehler, den Du wahrscheinlich gemacht hast, war, mit irgendwelchen Drag&Drop Operationen Controls auf die Seiten zu ziehen und diese dann über den Designer konfiguriert zu haben.

    Leider wird das immer noch in manchen Tutorials (teils auch "Fach"büchern) so gezeigt. Mit Softwareentwicklung geschweige denn Programmierung hat das rein gar nichts zu tun.

    Wie Du ja selbst sagst, arbeitest Du dich ja gerade erst ein (ok, jetzt zumindest nicht mehr in ASP.NET), daher ein paar grundlegende Sachen:

    Egal, ob Du mit PHP, ASP.NET, ... arbeitest: Fragen wie:

    woher weiss ein UI-Feld (z.B. <asp:textbox id="UserName" runat="server">) auf welches Feld in welcher Tabelle zugegriffen werden muss</asp:textbox>

    kann man recht einfach mit "Gar nicht, wenn Du das nicht selbst machst" beantworten.

    Um auf Datenbanken zugreifen zu können, gibt es bspw. die SqlConnection, SqlCommand, SqlDataAdapter, SqlDataReader, ... Klassen.

    Wenn Du dich nicht unbedingt selbst mit den Interna befassen möchtest, gibt es verschiedene Möglichkeiten wie Linq2SQL, O/R Mapper wie das Entity Framework, NHibernate, ... oder halt die eingangs erwähnten, aber IMHO absolut unbrauchbaren Controls wie SqlDataSource, ...


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 26. Juli 2012 14:11
    Moderator
  • Hallo Stefan,

    nein ich habe nichts dergleichen gemacht. Ich hatte mit dem Visual Studio 2012RC eine Webanwendung geöffnet/erstellt (MS Template?)

    Darin ist schon ein vollständiger Registrierungs/Login-Prozess enthalten, welcher Daten von der UI (Webbrowser) in die Datenbank schreibt, bzw. auch wieder anzeigt. Soweit so gut. Ich habe an diesem aus dem Template erstellten Projekt nichts geändert und bat hier die Community um Hilfe. Doch keiner konnte mir anschaulich darstellen wie im konkreten Fall, die Daten vom UI in die DB gelangen.

    Gruß & schönes WE

    Guenter

    PS Anhand der erhaltenen Antworten habe ich auch das Gefühl, das niemand meine eigentliche Frage tats gelesen und verstanden hat, und ich nur teilweise standardisierte Antworten bekommen habe.


    Freitag, 27. Juli 2012 09:11
  • Hallo Guenter,

    durch die Verwendung von sog. "Blackboxes", welche leider auch von den in VS enthaltenen Anwendungsvorlagen gerne und häufig verwendet werden, kann dir eigentlich auch niemand sagen, wie in einem solchen Fall die Daten von a nach b und zurück kommen. Das handlen diese Controls intern automatisch.

    Daher auch der Hinweis, dass man auf diese Controls verzichten sollte, denn individuelle Änderungen sind nicht und nur mit sehr hohem Aufwand möglich.

    Einige mögliche Wege hab ich dir ja aufgezeigt.

    Bzgl. deines Gefühls, dass niemand deine Frage tatsächlich gelesen hat: Ich denke schon, dass die Antwortenden die Frage gelesen und verstanden haben. Nur ist es aufgrund der o.g. "Blackboxen" nicht wirklich erklärbar, wie das UI die Daten in die DB schreibt und umgekehrt. Daher sind die Hinweise IMHO schon so in Ordnung gewesen, auch wenn Sie dir letztendlich nicht dabei geholfen haben, das zu verstehen.

    Zudem arbeiten die allermeisten Entwickler eben nicht mit den Vorlagen und schon gar nicht mit den Controls wie bspw. SqlDataSource oder gar mit dem Standard ASP.NET MembershipProvider, ... Eben weil man hier nicht eingreifen kann und sich an (ziemlich komplizierte) Vorgaben halten muss, damit überhaupt was funktioniert.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 27. Juli 2012 10:07
    Moderator
  • Danke Stefan,

    Schade, genau diese Vorlag hat uns gefallen.

    Ich denke es ist nicht zielführend das nun noch weiter zu diskutieren. 

    Vielen Dank für deine Mühen.

    Gruß

    Guenter

    PS Wollte gerade deinen letzten Beitrag als Antwort markieren, aber dieser Link steht nun wohl nicht mehr zur Verfügung!


    Freitag, 27. Juli 2012 12:26
  • PS Wollte gerade deinen letzten Beitrag als Antwort markieren, aber dieser Link steht nun wohl nicht mehr zur Verfügung!

    Hallo Guenter Petermann,

    Hat sich erledigt  J (der Thread war in Diskussion umgewandelt deshalb konnte man nicht als Antwort markieren)

    Danke und Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 27. Juli 2012 13:27
    Moderator