darkmaster101 Geschrieben 16. Mai 2013 Geschrieben 16. Mai 2013 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. Zitieren
uenetz Geschrieben 16. Mai 2013 Geschrieben 16. Mai 2013 Passe das SQL-Statement so an, dass Du den Inhalt der Felder Vorname und Nachname in die WHERE-Klausel einbindest. Zitieren
darkmaster101 Geschrieben 16. Mai 2013 Autor Geschrieben 16. Mai 2013 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. Zitieren
uenetz Geschrieben 16. Mai 2013 Geschrieben 16. Mai 2013 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'" Zitieren
lbm1305 Geschrieben 16. Mai 2013 Geschrieben 16. Mai 2013 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 Zitieren
darkmaster101 Geschrieben 16. Mai 2013 Autor Geschrieben 16. Mai 2013 <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. Zitieren
ITKFM_Basti84 Geschrieben 16. Mai 2013 Geschrieben 16. Mai 2013 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 Zitieren
.NETter Geschrieben 17. Mai 2013 Geschrieben 17. Mai 2013 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 Zitieren
darkmaster101 Geschrieben 17. Mai 2013 Autor Geschrieben 17. Mai 2013 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? Zitieren
lilith2k3 Geschrieben 17. Mai 2013 Geschrieben 17. Mai 2013 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 Zitieren
LordHexa Geschrieben 17. Mai 2013 Geschrieben 17. Mai 2013 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. Zitieren
lbm1305 Geschrieben 17. Mai 2013 Geschrieben 17. Mai 2013 (bearbeitet) Wie macht ihr das, wenn ihr eine suche programmieren wollt? auch textbox einlesen und vergleichen? per javascript ;-) Bearbeitet 17. Mai 2013 von lbm1305 Zitieren
SilentDemise Geschrieben 17. Mai 2013 Geschrieben 17. Mai 2013 das javascript geht aber ja nicht auf die datenbank ;-) Zitieren
lbm1305 Geschrieben 17. Mai 2013 Geschrieben 17. Mai 2013 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. Zitieren
darkmaster101 Geschrieben 17. Mai 2013 Autor Geschrieben 17. Mai 2013 (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 17. Mai 2013 von darkmaster101 Zitieren
SilentDemise Geschrieben 17. Mai 2013 Geschrieben 17. Mai 2013 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. Zitieren
lbm1305 Geschrieben 17. Mai 2013 Geschrieben 17. Mai 2013 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? Zitieren
lilith2k3 Geschrieben 17. Mai 2013 Geschrieben 17. Mai 2013 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 ... Zitieren
darkmaster101 Geschrieben 18. Mai 2013 Autor Geschrieben 18. Mai 2013 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? Zitieren
lilith2k3 Geschrieben 18. Mai 2013 Geschrieben 18. Mai 2013 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 Zitieren
darkmaster101 Geschrieben 19. Mai 2013 Autor Geschrieben 19. Mai 2013 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. Zitieren
flashpixx Geschrieben 19. Mai 2013 Geschrieben 19. Mai 2013 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 Zitieren
lbm1305 Geschrieben 19. Mai 2013 Geschrieben 19. Mai 2013 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. Zitieren
Empfohlene Beiträge
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.