2011-11-14 7 views
1

테이블의 내용으로 데이터 테이블을 채울 수있는 함수가 있습니다. 그러나 그 WHERE 절에서 제공하는 가치와 성가신 무효 열 이름 오류를 보여주는. SQL 서버의 where 절에있는 열 값이 잘못되었습니다.

public static DataTable GetRequests(string empid) 
{ 
    DataTable dt = new DataTable(); 
    string strConnection = ConfigurationManager.AppSettings["connStr"]; 
    using (SqlConnection connection = new SqlConnection(strConnection)) 
    { 
     connection.Open(); 
     SqlCommand sqlcmd = new SqlCommand(); 
     SqlDataAdapter sAdap = new SqlDataAdapter();     
     sqlcmd.Connection = connection; 
     sqlcmd.CommandType = System.Data.CommandType.Text; 
     sqlcmd.CommandText = "Select * from requests Where emp_id=P001";     
     sAdap.SelectCommand = sqlcmd; 
     sAdap.Fill(dt); 
    } 
    return dt;    
} 

지금이와 내가

sAdap.fill 

에서 오류가 발생하고 에러가 나는이에 난처한 해요

invalid column name P001 

입니다. 왜 내가이 문제에 직면하고있는 어떤 아이디어?

답변

5

문자열 상수이면 작은 따옴표로 묶으십시오. 'P001'또는 더 나은 여전히 ​​paramaratise.

2

값 주위에 문자열 구분 기호가 필요합니다. 라인에 변경 : P001 주위에 작은 따옴표와

sqlcmd.CommandText = "Select * from requests Where emp_id='P001'"; 

를 당신도 잘해야합니다.

+0

내가 자기 자신을 바보로 만들 때 싫어, 고마워. – swordfish

1

작은 따옴표를 사용해야합니다.

where emp_id='P001' 
0

P001 데이터가 문자열 유형 인 것처럼 보입니다. SQL 문자열로 입력하기 전에 작은 따옴표로 인용 해보십시오.

sqlcmd.CommandText = "Select * from requests Where emp_id='P001'"; 

그건 당신이에서와 같은 문을 시도 할 수 있습니다 (이해야하지만)를 작동하지 않는 경우 :

당신은 작은 따옴표로 (apparrently) 텍스트 기준을 포위 할 필요가
sqlcmd.CommandText = "Select * from requests Where emp_id like 'P001'"; 
0

:

sqlcmd.CommandText = "Select * from requests Where emp_id = 'P001'"; 
관련 문제