2016-12-18 2 views
0

을 선택하면 잘못되었을 수 있습니다. 'A'근처의 구문이 잘못되었습니다..'A'근처의 구문이 올바르지 않음

postgreSQL에서 쿼리를 작성하는 데 익숙해 졌기 때문에 MySQL에는 약간 다른 구문이 있습니다.

cmd.CommandText = "WITH CurrentStop AS (SELECT[Stop Id] FROM Stops WHERE[Route Id] = " + 
        routeId + "AND Serial = " + stopsDriven + ")" + 
        "SELECT A.Firstname, A.Lastname, B.Make, B.Capacity, B.Route, D.Name" + 
        "FROM Driver A, Bus B, CurrentStop C, Stop D" + 
        "WHERE A.Id = " + row[0] + "AND B.[Bus Id] = " + row[1] + "AND C.[Stop Id] = D.[Stop Id]"; 

그런데 모든 입력은 시스템에만 있기 때문에 SQL 주입이 일어나지 않을 수 있습니다.

+2

MySQL은 공통 테이블 표현식을 지원하지 않습니다. –

+0

CTE가 메인 쿼리에 임베드 된 작업 쿼리를 제공하려고했지만 조인 조건이 이해가되지 않아서 주로 테이블을 서로 조인하는 것처럼 보입니다. 문제가 필요한 것. –

+0

@TimBiegeleisen 하나의 행만 선택해야하므로 각 테이블에 대해 WHERE 절에서 기본 키를 제공합니다. 그러나 어딘가에서 잘못되었을 수 있습니다. – Unknown

답변

0

실행하기 전에 쿼리를 인쇄하여 자세히 조사하십시오. 이렇게하면 "동적으로 생성 된 쿼리의 문제점은 무엇입니까?"라는 큰 덩어리가 해결됩니다. 우리가 여기서 본 스타일의 질문들.

예를 들어, 내가 사이에 공간이 부족주의 할 것 (반드시 완전한 목록이 내가 눈치 바로 그들이다) :

  • routeIdAND 다음은;
  • row[0] 및 이하 AND;
  • row[1] 및 다음과 같은 AND;
  • D.Name 및 다음 : FROM; 및
  • Stop D 및 다음과 같은 WHERE. 이 (이상한 생각) 변수가 공간에 끝날 수도있는 동안

그 마지막 두가 이후 확실히 문제가있다, 고정 문자열 확실히하지 않습니다. 둘 모두가 다음과 같이 나올 것이므로 특정 오류가 발생할 수 있습니다.

D.NameFROM Driver A 
Stop DWHERE A. 
관련 문제