Text Box in einer sql abfrage auslesen

Sacrifizius

Grünschnabel
hi

also:
ich würde gerne in einer Textbox die eingegebene Artikelnummer auslesen und diese auf einen Button click in ein sql statement einfügen

hab schon einen ansatz aber das nicht...
select * from tabelle where artnr in (" & Request.Form(TextBox1.Text) & ")

kann mir jemand weiterhelfen?
 
Moinsen,

im Grunde ist dein Ansatz schon richtig. Nur schriebt man nicht TextBox1.Text
Sowas gibt es bei ASP nicht. Darum muss dein Request-Statement so aussehen:

Code:
Request.Form("NAME_DES_TEXTFELDES")

Aber, damit du es gleich richtig machst, solltest du keine dynamisch erzeugten SQL-Strings verwenden. Damit meine ich, dass du den String wie in deinem Beispiel selber zusammenbaust. Das ist die größte Sicherheitslücke für deine Webseite die du nur aufmachen kannst. Da könnte ein Hacker allerhand Blödsinn machen ... bis hin zum Formatieren deines Servers, wenn du deinen SQL-Server nicht richtig abgesichert hast. Das Stichwort hierbei ist SQL-Injection.

Um das zu vermeiden, solltest du immer
1.) alle Eingaben überprüfen
2.) parametrisierte SQL-Statements verwenden.

Weitere Informationen dazu findest du bei ASPHeute.com
--> Gegengifte für SQL Injection

So long und happy coding,
Chrisu
 
also ich habe jetzt:

Code:
selectQuery = @"select Artnr as Artnr, DIFF as DIFF, Anzahl as Anzahl, Menge as Menge from TABLE where artnr=('" & Request.Form("TextBox1") & "')order by diff asc";

aber es funktioniert nicht,. er meldet immer "Request.Form deutet auf eigenschaft hin, wo Methode erwartet wurde"...

zu hülf
 
Hi

Am besten du baust das Ganze folgender massen auf:

Code:
Dim myTextbox
myTextbox = Request.Form("TextBox1")

selectQuery = "SELECT Artnr, DIFF, Anzahl, Menge FROM TABLE Where Artnr='" & myTextbox & "' Order by DIFF asc"

Ich hoffe das hilft dir weiter.

Gruss
 
Ich glaub, da haben wir es mit einem ganz anderen Problem zu tun. Ich bin davon ausgegangen, dass du ASP und nicht ASP.NET verwendest. Schau ich mir deinen Code jetzt mal genauer an, dann seh ich dass da ein @-Zeichen vor dem String und ein ;-Zeichen nach dem String verwendest. Wenn mich nicht alles täuscht, verwendest du ASP.NET mit der Sprache C#?! Kann das sein?
Wenn ja, dann vergiss das mit dem Request.Form und schau dir mal die ASP.NET-Programmierung mit Datenbanken an.

--> Verhinderung von SQL Injection Marke .NET

Da wird auch beschrieben, wie man mit ASP.NET eine DB-Abfrage macht. Und vor allem wie man das ganze mit parametrisierten Anfragen sicher bekommt.

So long,
Chrisu
 
Ich habe das ganze so gelöst und das funktioniert auch ... ist zwar MYSQL .. aber da musst du nur das ?A_nr anders bennen mit & oder so glaube ich oder ? naja hier mein Code

Code:
Dim daArtikelauskunft As MySqlDataAdapter
Dim dsArtikel As New DataSet

Dim SelectCommand As String = "SELECT * FROM Artikel where ARTIKEL_NR = ?A_nr;"

        My_connect.Open()

        daArtikelauskunft = New MySqlDataAdapter(SelectCommand, My_connect)
        daArtikelauskunft.SelectCommand.Parameters.Add(New MySqlParameter("?A_nr", MySqlDbType.String))
        daArtikelauskunft.SelectCommand.Parameters("?A_nr").Value = Left(txt_artikelnr.Text & "000000000", 9)

        daArtikelauskunft.Fill(dsArtikel, "Artikel")

        My_connect.Close()
 
Moinsen,

nicht ganz. Beim SQL-Server von MS verwendet man das @-Zeichen, nicht das &-Zeichen.

So long,
Chrisu
 

Neue Beiträge

Zurück