Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

Ich bin noch ein Anfänger in ASP.Net und brauche eure Hilfe.

Also ich möchte so eine Art Suche von im Datenbank hinterlegten Personen erstellen. Aber ich weiss nicht wie.

Eine Verbindung zum SQL habe ich schon hergestellt, die gesamten Daten kann ich abrufen über GridView.

Aber ich möchte jetzt nur Personen bei SuchButtonKlick anzeigen die mit dem eingegebenen Namen( TextBox_Vorname und TextBox_Nachname) übereinstimmen.

Vielen Dank im Voraus.

Mit ASP habe ich noch nie gearbeitet, aber könnte mir vorstellen, dass es so gehen könnte:

SelectCommand="SELECT * FROM kunden WHERE Nachname = '" + tb_nachname.text + "' AND Vorname = '" + tb_vorname.Text'"
  • Autor
<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:LBConnectionString %>"

ProviderName="<%$ ConnectionStrings:LBConnectionString.ProviderName %>"

SelectCommand="SELECT * FROM kunden"></asp:SqlDataSource>

Wie oben funktioniert die Ausgabe super, jedoch gilt das für alle Kunden.

Ich möchte dort eine WHERE Klausel einbauen mit der die Inhalt der Textboxes mit Datenbank verglichen wird und nur Kunden ausgibt die z.B. Müller heißen.

versuch mal folgendes:

beim klick auf den button änderst du den select befehl, das sieht in etwa so aus

"Sqldatasource.selectcommand = "SELECT * FROM kunden where name = '" & Textbox1.Text & "' AND nachname = '" & Textbox2.Text & "'"

Danach noch ein Gridview.DataBind()

Sollte klappen ;)

das sieht in etwa so aus

"Sqldatasource.selectcommand = "SELECT * FROM kunden where name = '" & Textbox1.Text & "' AND nachname = '" & Textbox2.Text & "'"

Sowas kann wirklich nur für einen internen Test genutzt werden!

Für eine öffentlich zugängliche Suche bitte IMMER SqlParameter nutzen.

Ansonsten ist SQL-Injection Tür und Tor geöffnet.

Hier mal die Doku zum Thema:

http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlparameter.aspx

Gruß,

Thomas

  • Autor
versuch mal folgendes:

beim klick auf den button änderst du den select befehl, das sieht in etwa so aus

"Sqldatasource.selectcommand = "SELECT * FROM kunden where name = '" & Textbox1.Text & "' AND nachname = '" & Textbox2.Text & "'"

Danach noch ein Gridview.DataBind()

Sollte klappen ;)

ich habe das versucht aber kommt immer fehlermeldung wegen WHERE.

bin echt ratlos.

Sowas kann wirklich nur für einen internen Test genutzt werden!

Für eine öffentlich zugängliche Suche bitte IMMER SqlParameter nutzen.

Ansonsten ist SQL-Injection Tür und Tor geöffnet.

Hier mal die Doku zum Thema:

SqlParameter-Klasse (System.Data.SqlClient)

Gruß,

Thomas

wie mache ich das, wo soll ich diese klasse/parameter einbauen?

Wie macht ihr das, wenn ihr eine suche programmieren wollt? auch textbox einlesen und vergleichen?

Um dein Codeschnippsel mit der SqlDataSource noch mal aufzugreifen, sollte das ungefährt so aussehen


   <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:LBConnectionString %>" ProviderName="<%$ ConnectionStrings:LBConnectionString.ProviderName %>" SelectCommand="SELECT * FROM kunden WHERE name = @name">

        <SelectParameters>

            <asp:ControlParameter ControlID="Textbox1" PropertyName="Text" />

        </SelectParameters>

    </asp:SqlDataSource> 

Hab es jetzt auf die Schnelle nicht getestet.

  • Autor
Um dein Codeschnippsel mit der SqlDataSource noch mal aufzugreifen, sollte das ungefährt so aussehen


   <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:LBConnectionString %>" ProviderName="<%$ ConnectionStrings:LBConnectionString.ProviderName %>" SelectCommand="SELECT * FROM kunden WHERE name = @name">

        <SelectParameters>

            <asp:ControlParameter ControlID="Textbox1" PropertyName="Text" />

        </SelectParameters>

    </asp:SqlDataSource> 

Hab es jetzt auf die Schnelle nicht getestet.

Jo, jetzt hat es endlich geklappt. Genau wie du's geschrieben hast. Nur dass man die Parameter einen Namen geben muss.

Danke für alle Antworten. Ihr habt mir sehr geholfen.

<asp:ControlParameter ControlID="Textbox1" PropertyName="Text" Name="name" />

Bearbeitet von darkmaster101

wieso nicht? sicherlich nicht direkt ;-)

aber die frage war ja, wie andere eine suche realisieren würden.

Weil für Javascript der SQL Server aus dem Internet erreichbar sein müsste, das macht jawohl niemand. Und du mit JavaScript schlecht die credentials für die DB sicher ablegen kannst.

Weil für Javascript der SQL Server aus dem Internet erreichbar sein müsste, das macht jawohl niemand. Und du mit JavaScript schlecht die credentials für die DB sicher ablegen kannst.

das ist mir auch klar. nur warum den te noch mehr verwirren?

Weil für Javascript der SQL Server aus dem Internet erreichbar sein müsste, das macht jawohl niemand. Und du mit JavaScript schlecht die credentials für die DB sicher ablegen kannst.

Webservice davor ... und geht ...

  • Autor

Nun die Suche hab ich hingekriegt, aber jetzt möchte ich eine Form für die Neukundendaten erstellen.

Das sieht so aus:

post-89589-14430449580154_thumb.jpg

Wie kann ich nun die eingegebenen Daten an die Datenbank schicken?

Ich kenne zwar den SQL Befehl INSERT aber nicht wie und wo man sie mit C# oder asp.net einbaut.

Könnt ihr mir bitte helfen?

  • Autor

 SqlConnection con = new SqlConnection();

            con.ConnectionString = "Data Source=localhost" + 

                                   "Initial Catalog=db" +

                                   "User ID=root" +

                                   "Password=";


            // SQL-Befehl


            string nachname = tb_nachname.Text;

            string vorname = tb_vorname.Text;

            string geburtstag = tb_geburtstag.Text;

            string strasse = tb_strasse.Text;

            string plz = tb_plz.Text;

            string ort = tb_ort.Text;

            string telefon = tb_telefon.Text;

            string email = tb_email.Text;


            string strSQL =

                 "INSERT INTO Kunden(Nachname, Vorname, Geburtstag, Strasse, PLZ, Ort, Telefon, Email) " +

                 "VALUES(nachname, vorname, geburtstag, strasse, plz, ort, telefon, email)";

            try

            {

                con.Open();

                SqlCommand cmd = new SqlCommand(strSQL, con);


                // Kommando absetzen


                cmd.ExecuteNonQuery();


                Label1.Text = "Kundenregistrierung war erfolgreich!";

                Label1.ForeColor = System.Drawing.Color.Green;

            }

            catch (Exception)

            {                 

                Label1.Text = "Kundenregistrierung war nicht erfolgreich!";

                Label1.ForeColor = System.Drawing.Color.Red;

            }

            con.Close();

ich habe sie durchgelesen und obige Code zusammengestellt.

Kannst du da irgendwie einen Fehler erkennen? Weil bei mir kommt nur "nicht erfolgreich".

Also keine Daten erstellt.

Die Feldnamen können beim Insert weg gelassen werden, sofern der Values-Teil alle Felder in der richtigen Reihenfolge enthält.

Ich kenn jetzt ASP nicht, aber eine Stringverknüpfung machst Du anscheinend auch mit +, wobei die Frage bei Deinem Code somit ist, wie die Variablen in das Statement eingesetzt werden, denn im Normalfall würde ich sagen es muss "...VALUES("+nachname+", "+vorname+".... heißen. Wobei man dies wohl auch nicht unter ASP machen würde, da dies Tür-und-Tor für SQL Injections öffnet, worauf Du ja schon hingewiesen wurdest.

Ich ist ratsam das Statement zu debuggen, ob es überhaupt syntaktisch korrekt ist. Ich würde davon ausgehen, dass Dein Statement nicht syntaktisch korrekt ist

a) wäre der Beitrag ein neues Thema / neuen Thread wert

B) passt die Stringkette nicht, wie bereits flashpixx geschrieben hat.

c) als tipp => stringkette ausgeben lassen und mal im SSMS (Sql Server Management Studio) ausprobieren.

d) ist der connctionstring korrekt

e) die exception werfen und nicht einfach unterdrücken.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.