OleDbException: синтаксическая ошибка в предложении ORDER BY
Я получил эту ошибку при тестировании того, как получить последнюю запись базы данных, выбрав необходимые столбцы, а затем указав уникальный идентификатор, который является номером комнаты, заказанным основным идентификатором, ID.
Вот мой код:
Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|patientinfo.accdb"
Conn.Open()
Dim statement As String = " SELECT room_number, patient_name,patient_age,date_confinement,type_sickness, type_fluid, bottle_used, drop_rate FROM tblPatientInfo WHERE room_number=1 ORDER BY ID DESC LIMIT 1"
RetrieveInfos(statement)
End Sub
Public Sub RetrieveInfos(ByRef statement As String)
Dim cmd As OleDbCommand = New OleDbCommand
With cmd
.CommandText = statement
.CommandType = CommandType.Text
.Connection = Conn
.ExecuteNonQuery()
'--read records in access database----------------
Dim reader As OleDbDataReader = cmd.ExecuteReader
While reader.Read
lblName.Text = (reader.GetString(0))
lblAge.Text = (reader.GetInt32(1).ToString)
lblDate.Text = (reader.GetDateTime(2).ToString)
lblSickness.Text = (reader.GetString(3))
lblFluid.Text = (reader.GetString(4))
lblBottle.Text = (reader.GetInt32(5).ToString)
lbldrops.Text = (reader.GetInt32(6).ToString)
End While
reader.Close()
End With
End Sub
Любая помощь будет признательна. Спасибо!
2 ответа:
Предложение "LIMIT 1" является подозрительным. Предложите изменить запрос, чтобы использовать "SELECT TOP 1 ....."
Dim statement As String = " SELECT TOP 1 room_number, patient_name,patient_age, date_confinement,type_sickness, type_fluid, bottle_used, drop_rate FROM tblPatientInfo WHERE room_number=1 ORDER BY ID DESC"
(запрос завернут с жесткими возвратами здесь для ясности).