Стандартный SQL SELECT * FROM TABLE возвращает синтаксическую ошибку - PullRequest
0 голосов
/ 03 сентября 2011

Я получаю сообщение об ошибке «в вашем синтаксисе sql есть ошибка».когда я использую этот оператор SQL:

SELECT * FROM gsm_oceanwide_integration

РЕДАКТИРОВАТЬ:

Чтобы поместить это в контекст, вот код im, используя этот оператор запроса в (VB.net):

Dim con As MySqlConnection = New MySqlConnection("Data Source=" & frmLogin.txtserver.Text & ";Database=stratocast;User ID=" & frmLogin.txtusername.Text & ";Password=" & frmLogin.txtpassword.Text & ";")
Dim sqladmin As MySqlCommand = New MySqlCommand("SELECT * FROM employee", con)
Dim sqlprojects As MySqlCommand = New MySqlCommand("SELECT * FROM projects", con)
Dim sqlpage As MySqlCommand = New MySqlCommand("SELECT * FROM '" & frmMain.ListBox1.SelectedItem & "';", con)

Dim ds5 As DataSet = New DataSet()
Dim DataAdapter5 As MySqlDataAdapter = New MySqlDataAdapter()
Dim Comb As MySqlCommandBuilder

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


    ' retrieving the Project Page.
    Try
        con.Open()
        DataAdapter5.SelectCommand = sqlpage
        DataAdapter5.Fill(ds5, "stratocast")
        DataGridView3.DataSource = ds5
        DataGridView3.DataMember = "stratocast"
        con.Close()

    Catch myerror As MySqlException
        MessageBox.Show("Error Retrieving Project Page: " & myerror.Message)
    End Try
End Sub

в моей форме frmMain у меня есть список со списком проектов (одним из них является gsm_oceanwide_integration ), и я хочу сделать так, чтобы приЯ нажимаю на этот выбор, он покажет другую форму с сеткой данных.это сетевое представление должно быть заполнено данными из таблицы, которую я назвал gsm_oceanwide_integration.(например, выбор списка)

, поэтому мой текущий оператор запроса (включая теги vb.net):

Dim sqlpage As MySqlCommand = New MySqlCommand("SELECT * FROM '" & frmMain.ListBox1.SelectedItem & "';", con)

Сегодня он работал раньше, но я должен был что-то изменить в нем изабыл ... с тех пор лучшее, что я могу сделать, - это избавиться от всех ошибок, но в datagridview по-прежнему ничего не отображается в моей базе данных.Да, я проверил все написание.


ОБНОВЛЕНИЕ 2: Я изменил свой оператор команды sqlpage с:

Dim sqlpage As MySqlCommand = New MySqlCommand("SELECT * FROM '" & frmMain.ListBox1.SelectedItem & "';", con)

На:

 Dim sqlpage As MySqlCommand = New MySqlCommand("SELECT * FROM [" & Me.ListBox1.SelectedItem.Value & "]", con)

и я получил новую ошибку в другой форме все вместе, но она связана с listbox1;код для которого приведен ниже:

Private Sub ListBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedValueChanged
    Form1.indprojectname.Text = ListBox1.SelectedItem
    Form1.Show()
End Sub

Ошибка показана на этом снимке экрана (я подумал, что снимок экрана может быть лучшим способом для отображения подробностей ошибки): ScreenShot

ошибка: (если вы не смогли прочитать скриншот)

Произошла ошибка при создании формы.Смотрите Exception.InnerException для подробностей.Ошибка: переменная объекта или переменная блока не установлена.

Кроме того, спасибо за быстрые ответы, извините, я не смог обновить свой пост раньше ...

Спасибо!

Ответы [ 3 ]

2 голосов
/ 03 сентября 2011

Избегайте добавления каких-либо специальных символов в имена таблиц или полей.Придерживайтесь соглашения, такого как ...

myFieldName - известного как верблюжья оболочка или ...

my_field_name - просто используйте подчеркивание

Что касается sqlзаявление, что я не вижу ничего сразу не так с этимПравильно ли указано имя таблицы?

2 голосов
/ 03 сентября 2011

Как насчет одинарной кавычки до того, как ваша двойная кавычка вокруг имени таблицы поступит из вашего списка?Этого не должно быть там.У вас есть:

Dim sqlpage As MySqlCommand = New MySqlCommand("SELECT * FROM '" & frmMain.ListBox1.SelectedItem & "';", con)

Должно быть:

Dim sqlpage As MySqlCommand = New MySqlCommand("SELECT * FROM " & frmMain.ListBox1.SelectedItem & ";", con)
1 голос
/ 03 сентября 2011

Относительно вашего запроса о пробелах в именах таблиц:

Краткий ответ - да, но не

Однако я бы взглянул на документацию MySQL по именам объектов схемы

Также, как уже упоминалось в комментариях, пробелам разрешается использовать идентификатор таблицы с использованием заключенных в кавычки идентификаторов, но я бы не стал поощрять их использование, главным образом для удобства чтения.

Что касается вашего запроса,потребуется дополнительная информация, например, список таблиц.

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