mysql 标准SQL SELECT * FROM TABLE返回语法错误

h7wcgrx3  于 12个月前  发布在  Mysql
关注(0)|答案(4)|浏览(167)

我一直得到一个错误,说“你的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),我想让它在单击该选项时显示另一个带有datagridview的表单。此datagridview需要填充来自我称为gsm_oceanwide_integration的表的数据。(如列表框选择)
所以我当前的查询语句(包括vb.net标签)是:

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


今天早些时候它还能工作,但我一定是修改了一些东西,忘记了.

**UPDATE 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)


我在另一个表单上得到了一个新的错误,但它链接到listbox 1;代码如下:

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


错误显示在这个屏幕截图中(我认为屏幕截图可能是显示错误详细信息的最佳方法):x1c 0d1x
错误是:(如果你无法阅读屏幕截图)
创建表单时出错。有关详细信息,请参阅Exception.InnerException。错误是:未设置Object变量或With块变量。
另外,谢谢你的快速回复,对不起,我不能更快地更新我的帖子。
谢谢你,谢谢

rggaifut

rggaifut1#

在列表框中的表名周围的双引号之前的单引号怎么样?它不应该在那里。你有:

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

字符串
它应该是:

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

nfg76nw0

nfg76nw02#

避免在表名或字段名中添加任何特殊字符。坚持使用约定,例如...
myFieldName-称为 Camel 套管或.
my_field_name-仅使用下划线
至于sql语句,我看不出它有什么问题。表名正确吗?

kyvafyod

kyvafyod3#

关于您对表名中的空格的查询:
简短回答-是但不是
不过,我会看看MySQL documentation on Schema Object Names
同样如注解中所提到的,允许使用带引号的标识符将空格作为表标识符,但我不鼓励使用它们,主要是出于可读性的考虑。
至于你的查询,则需要更多的信息,比如你的表列表。

4bbkushb

4bbkushb4#

我得到了与提问者相同的错误,但原因不同。
我将我的一个表命名为order,当对这个表执行查询时,sql会认为我的表名是关键字ORDER
select * from order;返回

ERROR:  syntax error at or near "order"
LINE 1: select * from order;

字符串
为了解决这个问题,我可以将表名用双引号括起来,并成功地运行搜索。
select * from "order";工作!

相关问题