2011-09-02 70 views
0

我不斷收到一條錯誤消息,提示「sql語法中存在錯誤」。當我使用這個SQL語句:標準SQL SELECT * FROM TABLE返回語法錯誤

​​

編輯:

爲了把這一背景下繼承人的(VB.net)使用這個查詢語句代碼IM:

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) 

這是今天早些時候工作,但我必須在它已經改變了一些東西,忘了... ... 從那時起,我能做的最好的就是擺脫所有的錯誤,但datagridview仍然不會在我的數據庫上顯示任何東西。是的,我檢查了所有的拼寫。


更新2:

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

要: 我從改變了我的sqlpage命令語句

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

查詢看起來不錯給我。你向我們展示了一切嗎?至於表名中的空格,可以通過使用back ticks(例如「我的表格」)來避開名稱,但爲了便於閱讀,我建議您不要使用它。使用下劃線代替 –

+0

您的查詢不以標準結尾你使用某種定製的分隔符嗎? – ajreal

+1

'gsm_oceanwide_integration'是一個保留字,呃! – Johan

回答

2

在您的列表框中引入表名稱之前,單引號如何處理?那不應該在那裏。您有:

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

它應該是:

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

當我應用上面提出的更改時,出現錯誤(在第1行附近的SQL語法中出現錯誤)..... im正在嘗試從表中選擇所有列,並指定名稱 – daniel11

+0

當你設置一個斷點和調試時,SelectedItem的值是什麼? – Brian

+0

實際上,現在我再次查看代碼,我將其重寫爲:Dim sqlpage As MySqlCommand = New MySqlCommand(「SELECT * FROM [」&Me.ListBox1.SelectedItem.Value&「]」,con)根據列表中存儲的內容使用.Value或.Text屬性。 – Brian

1

關於你提到的有關空間的表名查詢:

簡答 - 是的,但沒有

然而,正如在評論中提到我想借此看看MySQL documentation on Schema Object Names

此外,空間是允許使用帶引號的標識符作爲表的indentifer,但我不會鼓勵使用它們,主要是爲了可讀性原因。

至於你的查詢,需要更多的信息,比如你的表的列表。

2

避免在表名或字段名中添加任何特殊字符。堅持公約,如...

myFieldName - 被稱爲駱駝套管或...

my_field_name - 只是用下劃線

至於sql語句我看不到任何東西,立即錯它。表名是否正確?

相關問題