Veröffentlicht 16. Mai 201312 j 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.
16. Mai 201312 j Passe das SQL-Statement so an, dass Du den Inhalt der Felder Vorname und Nachname in die WHERE-Klausel einbindest.
16. Mai 201312 j Autor SelectCommand="SELECT * FROM kunden WHERE Nachname = tb_nachname.text AND Vorname = tb_vorname.Text" ja, ich hab das auch gedacht. Aber ich weiß nicht wie ich diese Abfrage ausdrücke. Wie oben ist es nicht.
16. Mai 201312 j 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'"
16. Mai 201312 j Mich würde interessieren, wie Du die Abfrage gegen den SQL-Server schickst? Als SqlCommand? Falls ja, dann schau Dir mal die Klasse SqlParameter an. Ein einfaches Beispiel findest Du auch hier: C# SqlParameter Example
16. Mai 201312 j 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.
16. Mai 201312 j 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
17. Mai 201312 j 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
17. Mai 201312 j 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?
17. Mai 201312 j Lektürevorschlag: Galileo Computing :: Visual C# 2012 - 31 ADO.NET – Verbindungsorientierte Objekte ff. und vorallem das Kapitel: Galileo Computing :: Visual C# 2012 - 37 Einfhrung in das ADO.NET Entity Framework
17. Mai 201312 j 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.
17. Mai 201312 j Wie macht ihr das, wenn ihr eine suche programmieren wollt? auch textbox einlesen und vergleichen? per javascript ;-) Bearbeitet 17. Mai 201312 j von lbm1305
17. Mai 201312 j das javascript geht aber ja nicht auf die datenbank ;-) wieso nicht? sicherlich nicht direkt ;-) aber die frage war ja, wie andere eine suche realisieren würden.
17. Mai 201312 j 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 17. Mai 201312 j von darkmaster101
17. Mai 201312 j 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.
17. Mai 201312 j 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?
17. Mai 201312 j 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 ...
18. Mai 201312 j Autor Nun die Suche hab ich hingekriegt, aber jetzt möchte ich eine Form für die Neukundendaten erstellen. Das sieht so aus: 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?
18. Mai 201312 j Ich wiederhole mich ja ungern, aber hast Du Dir die Lektüre durchgelesen, die ich Dir empfohlen habe? Lektürevorschlag: Galileo Computing :: Visual C# 2012 - 31 ADO.NET – Verbindungsorientierte Objekte ff. und vorallem das Kapitel: Galileo Computing :: Visual C# 2012 - 37 Einfhrung in das ADO.NET Entity Framework
19. Mai 201312 j 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.
19. Mai 201312 j 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
19. Mai 201312 j a) wäre der Beitrag ein neues Thema / neuen Thread wert 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.