Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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'"
Geschrieben
<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.

Geschrieben

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 ;)

Geschrieben

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

Geschrieben
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?

Geschrieben

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.

Geschrieben (bearbeitet)
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
Geschrieben
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.

Geschrieben
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?

Geschrieben
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 ...

Geschrieben

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?

Geschrieben

 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.

Geschrieben

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

Geschrieben

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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...