2011-03-11 2 views
0

나는이 문장을 실행하고 나는 애니 에러하지 않습니다'INNER'키워드 근처에 '잘못된 구문이 표시됩니다. 왜 ASP.net에서 오류가 발생합니까? 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', " + 
"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'근처.

설명 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : 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, 또는 C# 코드에서와 같은 거대한 SQL을 유지 아무것도 사용을 고려
  • 텍스트 파일
  • 사용 축 어적으로 문자열에서

  • 잠재적으로 읽어 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

정보 Jon을 가져 주셔서 감사합니다. – SamekaTV

5

이 줄 끝에 공백이 없습니다 :

이 비트에
"hd_aanvragen.outlook_id" + 
1

나는 당신이 "FROM"전에 공백을 놓친 생각

"hd_aanvragen.outlook_id" + 
"FROM hd_aanvragen " 
1

이 올바른 소스 코드인가? 당신이

"hd_aanvragen.outlook_id" + 

라인에 공간을 누락보다이 하나 개의 불쾌한 쿼리입니다

"hd_aanvragen.outlook_id " + 
관련 문제