2015-02-06 5 views
0

오전 여기, 데스크탑 용 Adobe 공기에 AS3에서 를 sqlite가 매개 변수에 null이 아닌 값을 전달하려고 노력하는 것은 코드의 샘플입니다 : genderBox가있는 콤보입니다SQL 문은

stat.text = "SELECT * FROM people, WHERE gender = @gender AND year = @year AND month = @month"; 
stat.parameters["@gender"] = genderBox.value; 
stat.parameters["@year"] = year.text; 
stat.parameters["@month1"] = month.text; 

2 개의 값은 물론 남성과 여성 그리고 다른 것들은 텍스트 박스 일뿐입니다. 나는 genderBox 세 번째 값을 갖는 만들고 싶어 모두 남성과 여성 모두 그래서 사용자가 두 남성과 여성 모두 선택 null과 같은 값을 전달하고 그 열에서 모든 것을 선택하지만 원하는 선택을 선택하십시오 월 및 연도 다른 열

+0

그래서 실행할을 'WHERE gender = @ gender'가없는 쿼리? 왜 그렇게하지 않니? –

+0

@CL. 글쎄, 나는 그것을 삭제할 수 없다. 때로는 사용자가 성별 하나만 선택하기를 원하기 때문이다. –

답변

2

왜 두 단계로 명령문을 작성하지 않습니까?

stat.text = "SELECT * FROM people WHERE year = @year AND month = @month"; 
if (genderBox.value) { 
    stat.text += " AND [email protected]"; 
    stat.parameters["@gender"] = genderBox.value; 
} 

stat.text를이 방법으로 추가 할 수 있는지는 잘 모르겠지만 아이디어가 명확하다고 생각합니다.

여전히 같은 비 평등 평등을, 한 조각에 보관 변경하려면

:

stat.text = "SELECT * FROM people WHERE gender != @gender AND year = @year AND month = @month"; 

도 반대합니다 @gender PARAM을 사용하는 논리. genderBox가 "male"을 반환하면 쿼리는 모든 여성을 검색합니다. "여성"을 반환하면 남성을 검색합니다. 모두 검색하려면 존재하지 않는 값을 전달하십시오. 따라서 genderBox 로직을 변경해야하므로 혼란스러워집니다. 실제로는 좋은 방법이 아닙니다.

UPDATE

당신이 콤보 제 3 값으로 "남성, 여성"과 같은 쉼표로 구분 된 목록을 반환 할 수 있다면, 다음과 같은 쿼리를 사용할 수 있습니다

SELECT * FROM people WHERE gender in(@gender)... etc 
+0

고맙다. 첫 번째 옵션이 다른 것보다 더 효과가있는 것 같아서 고맙다고 생각한다. 두 사람은 일이나 다른 것을 좋아하지만 아직 시도하지 않았으므로 아무 것도 시도하지 않고 결과를 알려줍니다.
두 번째 솔루션은 좋고 첫 번째 솔루션은 작동하지 않지만 세 번째 제품은 완전히 이해할 수없는 경우 시도해 보겠습니다. –

+0

@ andrei-nikolaenko 감사합니다. 첫 번째 솔루션이 효과적입니다. –

+0

세 번째 솔루션은 표준입니다. SQL 구문 : "gender in (1,2,3 ...)"는 목록의 모든 값과 일치하는 모든 것을 검색한다는 것을 의미합니다. 따라서 귀하의 콤보 박스는 "남성", "여성"또는 "남성, 여성"을 반환해야합니다. –