2011-03-11 22 views
0

在SQL查詢分析器運行此聲明,我沒有得到ANNY錯誤:爲什麼我會在關鍵字'INNER'附近得到'錯誤的語法' - ASP.net中的錯誤?

string select = "SELECT " + 
"aanvrager.werknemersnaam AS melder , hd_aanvragen.aanvraag_titel, " + 
"hd_aanvragen.aanvraag_omschrijving, hd_aanvraag_fase.fase_datum, " + 
"hd_melding_niveau_1.niveau_omschrijving AS 'Niveau 1', " + 
"hd_melding_niveau_2.niveau_omschrijving AS 'Niveau 2', " + 
"hd_aanvragen.outlook_id" + 
"FROM hd_aanvragen " + 
"INNER JOIN hd_meldingen   ON hd_meldingen.melding_id  = hd_aanvragen.melding_id " + 
"INNER JOIN hd_melding_niveau_1 ON hd_melding_niveau_1.niveau1_id = hd_meldingen.niveau1_id " + 
"INNER JOIN hd_melding_niveau_2 ON hd_melding_niveau_2.niveau2_id = hd_meldingen.niveau2_id " + 
"INNER JOIN hd_aanvraag_fase  ON hd_aanvraag_fase.aanvraag_id = hd_aanvragen.aanvraag_id " + 
"INNER JOIN hd_statussen ON hd_statussen.status_id = hd_aanvraag_fase.status_id " + 
"INNER JOIN hd_werknemers AS oplosser ON oplosser.werknemer_Id = hd_aanvraag_fase.werknemer_Id " + 
"INNER JOIN hd_werknemers AS aanvrager ON aanvrager.werknemer_Id = hd_aanvragen.werknemer_Id " + 
"WHERE hd_statussen.status_id = 16"; 

但是,如果我運行這個select語句的位置:

MyDataSource.SelectCommand = select; 

我得到這個錯誤:不正確的語法靠近關鍵字'INNER'。

描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.Data.SqlClient.SqlException:關鍵字'INNER'附近的語法不正確。

+0

也就是說一個討厭的查詢! –

+0

爲什麼它是討厭的? – SamekaTV

+1

它連接在一起的許多表,它不是很可讀。我會將所需的邏輯放入存儲過程中,或者至少通過視圖公開這些結果,以便代碼本身不會混亂。你可以看到自己用這種代碼犯錯有多容易(你錯過了14行之一的空白) –

回答

3

看該位:

"hd_aanvragen.outlook_id" + 
"FROM hd_aanvragen " + 

所以,你的SQL將包含:

hd_aanvragen.outlook_idFROM hd_aanvragen 

我不認爲你的意思是...(注意上面引用的第一行末尾缺少空格)

建議:

  • 考慮使用存儲的特效,一個ORM,或其他任何東西,保持如此龐大的SQL出你的C#代碼
  • 從文本文件
  • 使用原義字符串

  • 可能讀取SQL文字,假設你的數據源可以在SQL處理換行符:

    string select = @"SELECT 
        aanvrager.werknemersnaam AS melder , hd_aanvragen.aanvraag_titel, 
        hd_aanvragen.aanvraag_omschrijving, hd_aanvraag_fase.fase_datum, 
        hd_melding_niveau_1.niveau_omschrijving AS 'Niveau 1', 
        ... 
        WHERE hd_statussen.status_id = 16"; 
    

此外,如果你去荷蘭國際集團要求:

In SQL Query Analyzer I run this statement and I don't get anny error

確保你實際上運行相同的SQL查詢。在調試器中複製實際select,將其粘貼到SQL查詢分析器中,您將看到完全相同的問題。

+0

謝謝你的信息喬恩。 – SamekaTV

5

此行缺少在後面加上一個空格:

"hd_aanvragen.outlook_id" + 
1

我想你錯過了之前「由」空白

"hd_aanvragen.outlook_id" + 
"FROM hd_aanvragen " 
1

這是正確的源代碼?比你在該行

"hd_aanvragen.outlook_id" + 

缺少空間,這應該是

"hd_aanvragen.outlook_id " + 
相關問題