2013-05-09 3 views
0

내 프로젝트 작업에 문제가 있습니다.오류 - 하나 이상의 필수 매개 변수에 값이 지정되지 않았습니다.

Excel 파일에서 데이터를 읽으려고합니다. 그것은 Col1Value보다 큰 행을 선택하려고 할 때 잘 동작하지만, AND Gender = " + gender;을 추가하면 "모든 값에 대해 아무런 가치도 부여하지 않습니다."모든 성별이 다르기 때문에 특정 성별 열을 설정할 수 없습니다 파일 이름은 동일하고 DataSet을 채울 때 오류가 나타납니다.

if (boxGender.Text != "") 

string gender = boxGender.Text; 
string col1Name = lbl1stColumn.Text; 


string Query = "select * from [data$] where " + 
       col1Name + " > " + Col1Value + 
       " AND Gender = " + gender;             
OleDbDataAdapter dacol1 = new OleDbDataAdapter(Query, con);       
    Column1Data.Clear(); 
    dacol1.Fill(Column1Data) 
    lblStuCount1Col.Text = Column1Data.Tables[0].Rows.Count.ToString(); 
+3

SQL 주입 – arunlalam

+0

주의 [질문 제목에서 우리가 포함시켜야 태그 (HTTP : //meta.stackexchange .com/questions/19190/should-questions-in-their-titles)를 포함합니까? 아니, 안돼. ** BOLD **에 제목을 써야합니까? : 아니 우리는해서는 안된다. – phadaphunk

+0

나만 사용하게 될 것입니다. :) –

답변

0

나는 당신이 당신의 SQL 쿼리에 따옴표를 누락 될 수 있습니다 생각 :

string Query = "select * from [data$] where " + col1Name + " > '" + Col1Value + "' AND Gender = '" + gender +"'"; 

참고 작은 따옴표 (') 기호를 추가했다.

+0

Yeap 그게 문제 였어. 고마워요. 선생님 –

+0

@EimantasBaigys 문제가 없습니다. –

+0

이 쿼리를 실행하면 성별에 따라 모든 데이터를 가져옵니다. 그러나'Col1Name> Col1Value '대신에 Male을 필터링하지 않습니다. 그것은 모든 남성을 보여줍니다 .... 어떤 제안? –

1

당신은 작은 따옴표로 문자열 값과 대괄호의 열 이름을 묶어야합니다 :

string Query = "select * from [data$] where [" + 
       col1Name + "] > " + Col1Value + 
       " AND Gender = '" + gender + "'"; 
+0

괄호 안의 열 이름은 필수가 아니어야합니다. 맞습니까? 공백이 없으며 반드시 'col1Name'은 키워드가 아닙니다. – Brad

+0

'col1name'은 리터럴이 아닌 변수입니다. 공백이있는 값을 포함 할 수 있습니다. –

+0

당신 말이 맞아 ... 나는이 밝은 빛에 눈이 멀었다. – Brad

관련 문제