2016-03-20 14 views
0

araştırdım ve araştırdım ... henüz bir çözüm bulmak için. Kodlama nedeniyle benzer sıkıntıları olan insanları okudum, ancak sorguyu yeniden denedim ve hatta Notepad ++ içinde UTF-8'e dönüştürmeyi kullandım. Herhangi bir fikir?SQL Server "Yanlış sözdizimi" WHERE ifadesinin yakınında

Hata:

Incorrect syntax near 'NEW'.

Sorgu:

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

.net ve sql sunucularını kullanıyorsanız, neden oleDb ve Jet'i kullanıyorsunuz? 'SqlClient' kullanın. Bu, sorununuzu da çözebilir. –

+0

Jet, Microsoft Access için değil, SQL Server içindir. Sağlayıcıları değiştirmeniz gerekiyor. – Greg

cevap

1

SQL sunucusuna bağlanmak için yanlış sürücüyü kullanıyorsunuz.

MS Access Jet Engine kullanıyorsunuz. Ama bu başka bir SQL sözdizimi kullanıyor, işte bu yüzden çalışmıyor.

Sadece SQL Server OLEDB sürücüsünü kullanın ve işe yarayacaktır.

-1

Sil: Bu VB.NET programı içinde yürütülmektedir

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

bu OLEDB sürücüsü kullanarak oluşturduğunuz N, 'NEW' arkasında (

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

Üzgünüz, denediğim tüm sorgu biçimi kombinasyonlarını dahil etmeliydim. N'nin çıkarılması yine aynı hatayla sonuçlanır. Problemi çözecek olan N düşüncesini dahil etmiştim ve orada bırakmıştı. Özgün sorgu şu gibi görünüyordu: orgDefaults YERELDİR orgcode = 'YENİ' VE ctlName = 'AllowReportables' – user3125278

+0

orgcode ve ctlname için veri türleri nelerdir? –

+0

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

0

Sadece bunun hack için, bu deneyin: [bazı "özel" sorunu varsa] Sql bu şekilde değerlerinizi ve alan türlerini daha iyi maç olacak yürütülen çünkü

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 

Bu size daha iyi görüntü verecektir.

İlgili konular