Ошибка при выполнении SQL - PullRequest
0 голосов
/ 05 марта 2010

Я получаю следующую ошибку, когда пытаюсь выполнить приведенный ниже код.Я также добавил строку SQL, которую я передаю.Чего мне не хватает?

Ошибка:

Синтаксическая ошибка (отсутствует оператор) в выражении запроса 'TOURID = 25e5eed3-ea84-4c30-a660-2c880253da60'

Мой запрос,

DELETE * FROM TOURS WHERE TOURID = 25e5eed3-ea84-4c30-a660-2c880253da60;

Мой код,

Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\_Development\Data\filename.accdb;Persist Security Info=False;"
Dim DBConnection As New System.Data.OleDb.OleDbConnection(connectionString)
Try
    DBConnection .Open()
    Dim cmd As New System.Data.OleDb.OleDbCommand(sql, DBConnection )
    Dim sqlAdapterTOURS As New System.Data.OleDb.OleDbDataAdapter(cmd)
    cmd.CommandType = CommandType.Text
    cmd.ExecuteNonQuery()
Catch ex As Exception
    MessageBox.Show(ex.Message)
Finally
    DBConnection .Close()
End Try

Ответы [ 4 ]

5 голосов
/ 05 марта 2010

При работе с GUIDS вам нужно указывать, например:

3 голосов
/ 05 марта 2010

Ваше значение должно быть заключено в одинарные кавычки, например:

DELETE * FROM TOURS WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60';
1 голос
/ 06 марта 2010

Access / Jet / ACE не очень удобен для GUID. Майкл Каплан написал об этом много лет назад:

Репликация и GUID, хорошие, плохие и уродливые

В зависимости от контекста вам может понадобиться использовать функции VBA для работы с GUID, то есть StringFromGUID () и GUIDFromString (). Я не уверен точно, что вы должны делать в контексте SQL, хотя. Я знаю, что вы не можете выполнить соединение между двумя полями GUID (вы должны использовать неявные объединения, то есть вместо этого использовать предложение WHERE).

1 голос
/ 05 марта 2010

Угадайте: ваша запись типа GUID должна быть заключена в кавычки, возможно?:

DELETE FROM TOURS WHERE TOURID = '25e5eed3-ea84-4c30-a660-2c880253da60'
...