== 아래의 템플릿을 기재해 주시면 상세히 답변해 줄 수 있습니다. ==
1. 사용언어 (c#,vb.net) : C#
2. 사용툴 (VS2005, VS2008) : VS2008
3. 운영체제 (WIN 2003, XP) : XP
4. 질문 : 안녕하세요~ ^^
항상 막힐때만 질문글 올리고... 평상시에는 눈팅만하고 나가서 질문하는게 염치가 없네요..^^;;
실력좀 쌓고나서 언젠가 저도 주저리주저리 할 날을 기다려봅니다~
ODBC 를 이용하여 DB에서 Query에 해당되는 결과 Data를 가져와서
DataSet 혹은 DataGridView를 이용하여 결과 Data를 뿌려주게 하고싶습니다.
그런데 DataGridView control 을 grdSsano 란 이름으로 만들고
디자인 우측상단에서 Binding할 Data source를 셋팅하기도 했습니다.
질문 1 - DataGridView 디자인 우측 상단에서 Choose Data Source 메뉴를 통해서
ConnectionString 등을 지정하여 Binding 하는 것과 코드상으로 Binding 하는 것이
둘다 필요한 것인가요? 일반적으로 어떤식으로 하는 것이 좋을까요?
질문 2 - DB로 부터 Query를 통한 결과 Data를 OdbcDataAdapter 가 DataSet으로 넣어주고
이것을 DataGridView 로 뿌려준다는 개념으로 이해했는데 맞나요?
맞다면, grdSsano 가 dataSetTotal 이란 DataSet 을 제대로 바인딩하게 해야하는데
코드상으로 DataSource 를 지정해주긴했는데 Binding 은 어떻게 해야하나요.?
어디선가 본 grdSsano.Databind 란 속성은 있지도 않네요..;;
public Form1()
{
InitializeComponent();
OdbcConnection odbcCon = new OdbcConnection();
string conStr;
conStr = "Provider=MSDASQL;DSN=CA400;uid=sa1;pwd=password";
odbcCon = new OdbcConnection(conStr);
string sqlStr = "Select * From TSOLIB.TSSA100J Where brcd = '11'";
try
{
odbcCon.Open();
//OdbcCommand odbcCmd = new OdbcCommand(sqlStr, odbcCon);
OdbcDataAdapter odbcDa = new OdbcDataAdapter(sqlStr, odbcCon);
DataSet dataSetTotal = new DataSet();
odbcDa.Fill(dataSetTotal);
//grdSsano.DataSource = dataSetTotal;
}
catch (Exception e)
{
MessageBox.Show("Connection Fail.");
}
finally
{
odbcCon.Close();
}
첫댓글 grdSsano.DataSource = dataSetTotal.Tables[0]; 이거 되려나요?
웹일 경우 grdSsano.Databind 가 보이지만 윈폼일 경우 보이지 않습니다. grdSsano.DataSource = dataSetTotal.Tables[0]; 맞을 것 같습니다.
네..WInForm 맞습니다. 웹에서 하던대로 했더니 잘 안되더라구요.. 디자인뷰 단에서 마우스로 DataSource부분을 설정하지 않고, Tables[0]으로 하니까 data가 잘 넘어오네요. 감사합니다. ^^;;
그런데 왜 하필 Table[0] 인가요? 'ㅁ';
odbcDa.Fill(dataSetTotal); 위 부분에서 Adapter에서 Fill을 DataSet에 할 때 가상의 테이블을 생성해서 데이터를 테이블에 넣게 됩니다. odbcDa.Fill(dataSetTotal);에서 테이블 이름을 지정하지 않았기 때문에 DataSet의 첫번째 테이블의 내용을 DataGridView의 DataSource에 바인딩하라는 내용으로 알고 있습니다. 만약 odbcDa.Fill(dataSetTotal); 부분을 odbcDa.Fill(dataSetTotal, "A"); 로 설정하시면 dataSetTotal.Tables["A"]; 로 하시면 그리드에 데이터가 바인딩 될 것으로 판단됩니다. 수고하세요.
아하..그렇군요.. 설명 감사드려요.. ㅎㅎ