2016-12-02 5 views
0

Ich erhalte den folgenden Fehler, wenn ich meinen Code ausführe. Jede Hilfe bei der Identifizierung der Ursache wird helfen.Falsche Syntax in der Nähe von 'Invest'

+3

Verwenden Sie Parameter, um SQL-Injektion und Formatierungsfehler zu vermeiden. Würde Ihre aktuelle sql nicht lesen "WHERE Invest.P_num = 111UNIONSELECT ..." – LarsTech

+0

setzen Sie diese sql in einer Zeichenfolge Variable und drucken Sie es aus, so dass Sie es ohne alle concat-Operatoren sehen können, werden Ihre Fehler viel mehr auffallen klar so – soohoonigan

Antwort

0

Es scheint mir, dass T-SQL ein schlechtes Format hat, da zwischen Ptcl-Variablen und anderen Anweisungen keine Leerzeichen stehen.

Dim cmd_Email As New SqlCommand(
    "SELECT Main.P_Email FROM Invest INNER JOIN Main ON Invest.Ph_num = Main.Ph_num " & _ 
    "WHERE Invest.P_num =" & Ptcl & " UNION " & _ 
    "Select Main.P_Email FROM Invest INNER JOIN Main ON Invest.Ass1 = Main.Ph_num " & _ 
    "WHERE Invest.P_num =" & Ptcl & " UNION " & _ 
    "SELECT Main.P_Email FROM Invest INNER JOIN Main ON Invest.Ass2 = Main.Ph_num " & _ 
    "WHERE Invest.P_num = " & Ptcl, connection) 

Die obige Abfrage wurde in Bezug auf diese Leerzeichen behoben. Aber am besten ist es, Ihre Abfrage zu parametrisieren, eine lesbarere Struktur zu haben, sich vor SQL-Injektionen zu schützen und eine robustere Methode zu haben, um Argumente an die Abfrage selbst zu übergeben.

Hoffe, dies hilft

+1

Danke, das hat mir sehr geholfen. Ich war auch in der Lage, die Abfrage zu parametrisieren. – Loic

Verwandte Themen