2011-11-03 2 views
-4

매개 변수화 된 쿼리를 사용하여 데이터를 표시하려고합니다.C#으로 매개 변수화 된 쿼리를 사용하여 데이터를 표시 할 수 없습니다.

try 
{ 
SqlConnection xconn = new SqlConnection(); 
xconn.ConnectionString = @" Data Source=servername; Database=master; Trusted_Connection=yes "; 
xconn.Open(); 
SqlCommand ycmd = new SqlCommand ("select * from tablename where column1 = @name", xconn); 
ycmd.Parameters.Add("@name", dropdownlist.SelectedValue); 
SqlDataAdapter da = new SqlDataAdapter(s,xconn); 
SqlCommandBuilder cmdbuilder = new SqlCommandBuilder(da); 

DataTable dt = new DataTable(); 
da.Fill(dt); 
gridview.DataSource = dt; 
gridview.DataBind(); 
} 
catch(Exception ex) 
{ 
    label.Text = ex.Message + "\n" + ex.StackTrace; 
} 

어떻게 작동합니까?

+3

어떤 부분이 작동하지 않습니까? – BrokenGlass

+1

예외가 있습니까 ?? 당신은 명령을 실행하고 있습니까? –

+0

execcuting 후 무슨 일이 일어 났습니까? 당신이 얻고있는 오류는 뭐죠? – Sandy

답변

4

이 시도 : 당신이 SqlDataAdapter.Fill() 방법을 사용하는 경우

try 
{ 
SqlConnection xconn = new SqlConnection(); 
xconn.ConnectionString = @" Data Source=servername; Database=master; Trusted_Connection=yes"; 
SqlCommand ycmd = new SqlCommand ("select * from tablename where column1 = @name", xconn); 
ycmd.Parameters.Add("@name", dropdownlist.SelectedValue); 
SqlDataAdapter da = new SqlDataAdapter(ycmd); 

DataTable dt = new DataTable(); 
da.Fill(dt); 
gridview.DataSource = dt; 
gridview.DataBind(); 
} 
catch(Exception ex) 
{ 
    label.Text = ex.Message + "\n" + ex.StackTrace; 
} 

당신은 SqlConnection.Open()를 호출 할 필요가 없습니다. 이 방법에서는 연결을 열고 완료되면 연결을 삭제/닫습니다. (이것은 문제가 아니며 단지 FYI 임)

SqlDataAdapter을 만든 방법이 문제입니다. SqlCommand을 생성자로 사용하지 않고 명령 텍스트 만 만들었습니다. 그 때문에 SqlCommand 클래스에 지정된 매개 변수를 전달하지 않았습니다.

작동하는지 알려주세요. 그래도 문제가 해결되지 않으면 SSMS에서이 쿼리를 수동으로 실행하여 실제로 결과 집합이 반환되는지 확인하십시오. 또한 ListControl.SelectedValue 속성에 무언가가 포함되어 있는지 확인하십시오. 거기에 저장된 것을 디버깅하고 분석하여이를 수행하십시오.