2016-03-20 15 views
0

Ich habe recherchiert und recherchiert ... noch eine Lösung zu finden. Ich habe Leute gelesen, die wegen der Kodierung ähnliche Probleme haben, aber ich habe versucht, die Abfrage neu zu tippen und sogar in UTF-8 in Notepad ++ zu konvertieren. Irgendwelche Ideen?SQL Server "Falsche Syntax in der Nähe" WHERE-Anweisung

Fehler:

Incorrect syntax near 'NEW'.

Abfrage:

delete from [orgDefaults] 
where ([orgcode] = N'NEW') 
    and ([ctlName] = N'AllowReportables') 

Dieses in einem VB.NET-Programm ausgeführt wird, ich habe diesen OLEDB-Treiber erstellt mit:

Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & updates_mdb & ";Jet OLEDB:Database Password=" & Settings.Password & ";") 
+4

Wenn Sie. NET und SQL-Server verwenden, warum verwenden Sie OleDb und Jet? Verwende 'SqlClient'. Dies könnte Ihr Problem ebenfalls lösen. –

+0

Jet ist für Microsoft Access, nicht SQL Server. Sie müssen den Anbieter wechseln. – Greg

Antwort

1

Sie verwenden den falschen Treiber, um eine Verbindung zum SQL Server herzustellen.

Sie verwenden die MS Access Jet Engine. Aber das verwendet eine andere SQL-Syntax, deshalb funktioniert es nicht.

Verwenden Sie einfach den SQL Server OLEDB-Treiber, und es wird funktionieren.

-1

Löschen der N hinter 'NEU'

DELETE FROM [orgDefaults] WHERE ([orgcode] = 'NEW') AND ([ctlName] = 'AllowReportables') 
+0

Entschuldigung, ich hätte alle Abfrageformatkombinationen, die ich ausprobiert habe, enthalten sollen. Das Entfernen des N führt immer noch zum selben Fehler. Ich hatte das N eingeschlossen, weil ich dachte, es würde das Problem lösen und es dort lassen. Die ursprüngliche Abfrage sah wie folgt aus: DELETE FROM orgDefaults WHERE orgcode = 'NEU' UND ctlName = 'AllowReportables' – user3125278

+0

Was sind die Datentypen für orgcode und ctlname? –

+0

OrgCode = nvarchar (50) und CtlName = nvarchar (50) – user3125278

0

Just for Hack davon, versuchen Sie dies:

Using conn As New SqlConnection("sqlServer Conn string - connectionstrings.com") 
    Dim sql As String = "DELETE FROM [orgDefaults] WHERE [orgcode] = @1 AND [ctlName] = @2" 
    Using cmd As New SqlCommand(sql, conn) 
     cmd.Parameters.AddWithValue("@1", "NEW") 
     cmd.Parameters.AddWithValue("@2", "AllowReportables") 
     cmd.CommandType = CommandType.Text 
     conn.Open() 
     Dim retVal As Integer = cmd.ExecuteNonQuery() 
     If retVal > 0 Then 
      Debug.WriteLine("Success - deleted 1 or more records") 
      ' remeber, retVal may not match num of rows deleted. 
      ' Rather, it indicates total rows affected 
     Else 
      Debug.WriteLine("Still Success - deleted Nothing") 
     End If 
    End Using 
End Using 

Dies sollte Ihnen besseres Bild geben [wenn Sie einige „besondere“ Problem haben], da SQL auf diese Weise ausgeführt wird besser Ihre Werte und Feldtypen entsprechen.

Verwandte Themen