SQL-Query erzeugen mit C#-Variablen drin

Dommas

Erfahrenes Mitglied
Hallo Zusammen

Ich muss als Seminararbeit eine Webapplikation mit Visual Web Developer Express 2005 entwickeln und bin gerade daran, mich einzuarbeiten.
Bis jetzt konnte ich noch jedes Problem selbst lösen, nach ca. 6 Stunden "basteln" wende ich mich mit meinem aktuellsten Problem doch lieber an euch.

Hintergrund:

Ich speichere einen Wert aus einem Formular-Element in eine Session-Variable namens "SystemType". Diese Variable kann ich auch auf der nächsten Seite auslesen, absolut kein Problem. Auf dieser nächsten Seite sollten mir jedoch Daten in ein Gridview geladen werden, welche aus einer SQL-DB stammen. Soweit so gut, auch kein Problem.
Die Daten fürs Gridview sind aber abhängig vom Wert meiner Session-Variable, d.h. mein SQL-Query benötigt als WHERE-Bedingung diese Zahle in der Session-Variable. Und hier gibt's immer einen Fehler, egal was ich tue:

Das mach ich in meiner page_load Methode:

PHP:
SqlDataSource1.SelectCommand = "SELECT Manufacturer.Name AS Manufacturer, CPUID.Description, CPUID.Clockspeed FROM Part INNER JOIN Manufacturer ON Part.ManufacturerID = Manufacturer.ManufacturerID CROSS JOIN CPUID WHERE (Part.SystemTypeID = " + SystemType + ") AND (Part.ComponentType = 4)";

Ich kann mir denken, dass das so nicht geht. So geht's aber auch nicht:

PHP:
SqlDataSource1.SelectCommand = "SELECT Manufacturer.Name AS Manufacturer, CPUID.Description, CPUID.Clockspeed FROM Part INNER JOIN Manufacturer ON Part.ManufacturerID = Manufacturer.ManufacturerID CROSS JOIN CPUID WHERE (Part.SystemTypeID = " + Response.Write("SystemType") + ") AND (Part.ComponentType = 4)";

Ich bekomme jedesmal einen SQLError "Fehler in der Nähe von ")". "
Kann mir jemand von euch sagen, wie ich das SelectCommand meiner DataSource definieren kann inkl. eingebetteter Variablen?

Vielen Dank für eure Hilfe!

MfG
Thomas
 
Hi

Hast du dir im Debugger schon mal angeschaut, wie der SelectCommand nach dem Zusammenbauen ausschaut? Meist lässt sich daran schon erkennen, wo das Problem liegt (ggf. den Command mal direkt im QueryAnalyzer oder Management Studio absetzen). So auf den ersten Blick sieht der Query jedenfalls korrekt aus.
 
Hi

Ja der Query ist auch korrekt, das weiss ich. Wenn ich die Variable ersetze mit der Zahle 1 (oder 2, was auch immer), dann erhalte ich genau meine Ergibnisse, die ich will. Das Problem ist, dass die Variable dort nicht so stehen darf, das ist jedenfalls, was ich denke. Verstehst du, was ich meine oder hab ich dich jetzt falsch verstanden?

MfG Thomas

EDIT: Ich glaub ich hab's. Das Problem war, dass der Wert zeitweise nicht übergeben wurde und folglich leer war. Ich habe diesen Fall (Var = leer) nicht ebgefangen und somit kommt logischerweise ein SQL-Fehler...

Trotzdem vielen Dank für die Hilfe!
 
Zuletzt bearbeitet:
Das war genau das, auf was ich raus wollte ;)
Du solltest an die entsprechende Stelle eine Breakpoint setzen und die den Inhalt der Variable anschauen.
 
Alles klar :) Ich wusste halt nicht wie ich sowas genau machen muss, da ich das Tool noch nicht lange benutze. Hauptsache, es hat geklappt!

Vielen Dank für die Hilfe!

MfG Thomas
 

Neue Beiträge

Zurück