2014-04-24 2 views
1

C#에서 2 개의 테이블을 포함하는 쿼리를 만들고 있습니다. 모든 콤보 상자에 정보를 입력하면 쿼리가 제대로 작동합니다. 그러나 일부 빈 콤보 상자를 사용하여 쿼리를 만들려고하면 아무 것도 반환하지 않습니다.콤보 상자 선택에 따라 동적으로 쿼리 만들기

나는 문자열이 유효하지 않게 만드는 쿼리에서 ""를 갖게된다는 사실을 알게되었습니다. 어쨌든 누락 된 항목이나 누락 된 보조 테이블을 쿼리 할 수 ​​있도록 쿼리를 재구성 할 수 있습니까? 충고에 감사하다.

의 I 모든 필드를 입력하고 조회를 할 때 작품에 따라 다음과 같이 난 단지 paritial 필드를 채울 경우

enter image description here

, 그것은 작동하지 않습니다

enter image description here

내 검색어 문자열 :

string query = @"SELECT Agents." + comboq1.Text + ", Agents." + comboq2.Text + ", Agents." + comboq3.Text + ", Agents." + comboq4.Text + ", " 
           + secondaryTable.Text + "." + stCombo1.Text + ", " + secondaryTable.Text + "." + stCombo2.Text 
           + " FROM Agents INNER JOIN " + secondaryTable.Text + " ON Agents.Dept_ID" + "=" 
           + secondaryTable.Text + ".Dept_ID"; 
+0

어떻게 데이터베이스를 쿼리합니까, 어떤 유형의 쿼리를 얻습니까? (테스트로 콘솔에 쓸 수 있습니다). 또한 콤보 박스를 사용하더라도 SQL 주입에주의해야합니다. –

+0

나는 모든 콤보 상자를 채우는 한 dataGrid에 쿼리를 표시하고 관련 테이블 데이터를 올바르게 반환합니다. 아마도 약간의 주제에서 벗어나지 만 왜 SQL 주입에 대해 걱정할 필요가 있습니까? 그들은 단지 내가주는 옵션 중에서 선택을 할 수 있습니다. 사용자가 삽입 할 항목이 없습니다. – kar

답변

0
string agentsValue = string.empty; 
if (!comboq1.Text.equals(string.empty)) 
{ agentsValue = "Agents."+comboq1.text; } 
if (!agentsValue.equals(string.empty)) 
{ agentsValue +=","; } 
if (!comboq2.Text.equals(string.empty)) 
{ 
if (agentsValue.equals(string.empty)) 
{ agentsValue = "Agents."+comboq2.text; } 
else 
{ agentsValue += "Agents."+comboq2.text; } 
} 

나머지 콤보 상자에는 위의 코드를 따르고 두 번째 콤보 상자의 값을 추가하는 동안 값 사이에 쉼표를 추가하십시오. 이 형식으로 문자열을 작성한 후에는 쿼리에 추가 할 수 있으며 이제 쿼리를 실행하면 오류를 발견해서는 안됩니다.

희망 하시겠습니까?

0

나는 어떤 콤보 박스가 어떤 값도 제공하지 않는다고 검사하여 문자열로부터 콤보 상자 값을 생략하고 어떤 문제도 일으키지 않을 최종 문자열을 당신에게 덧붙이는 별도의 문자열을 사용할 것을 제안한다.

+0

예를 보여 주시겠습니까? 감사. – kar

관련 문제