Почему MariaDB не примет мою строковую переменную в качестве имени таблицы в моем sql-запросе? - PullRequest
0 голосов
/ 16 октября 2019

У меня проблемы с получением данных из моей базы данных xampp. Я довольно новичок в этом, поэтому я понятия не имею, как это исправить. Вот мой код:

Dim contract As String

Private Sub projectchart()
  OpenConnection()
  sql = "SELECT activityname, progress FROM '" & contract & "';"
  dr = cmd.ExecuteReader
  Chart2.Series("Progress").Points.Clear()

  While dr.Read
    Chart2.Series("Progress").Points.AddXY(dr("activityname"),dr("progress"))
  End While

  cmd.Dispose()
  con.Close()
End Sub

Когда я запускаю этот код, появляется эта ошибка

У вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с "c00101" в строке 1

c00101 - это имя таблицы и то, что содержит переменный контракт

Но когда я пытаюсь запустить код в следующем формате, все работает нормально, диаграмма, с которой я пытаюсь отобразить данные, работает отлично.

sql = "SELECT activityname, progress FROM c00101;"


Я действительно понятия не имею, почему это происходит. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 16 октября 2019

Если бы вы посмотрели на реальный SQL, а не на код, который его строит, вы бы увидели разницу, то есть одинарные кавычки. Это для указания текстовых значений. Подобно тому, как вы помещаете двойные кавычки вокруг литерала Strings в VB, но не вокруг переменных или других идентификаторов, так и вы помещаете одинарные кавычки вокруг текстовых литералов в SQL, но вокруг идентификаторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...