QnA
사용언어
(칠해주세요) => (C#,VB) |
사용툴 (VS) : 2014 |
운영체제 (OS) : Window |
이제 프로그래밍 배우기 시작한지 어느덧 6개월에 접어드는 완전 초짜입니다. 제 업무에 도움이 되게 스스로 프로그램을 개발해서 쓰는데 목표입니다. 주로 윈도폼이랑 ADO.NET만 사용해서 프로그램을 만들 예정이고요. 앞으로 무수한 질문을 할 것 같습니다. ㅠㅠ 부탁드립니다.
ADO.NET 이랑 윈도폼을 이용해서 사용자의 액티비티를 저장하려고 하는데요, 데이터베이스에는 죠인된 테이블때문에 int형을 저장해야합니다. 그런데 윈도폼에서는 스트링형 데이터를 유져가 넣기 때문에 데이터 베이스에 업뎃을 할때 아래처럼 전체 테이블을 룹으로 돌면서 스트링을 1-10으로 바꾸고요, 다시 또 그 밑에서 int형으로 변환을 해줬는데도 에러가 나네요. datatable 에는 ActivityName 이라는 string 칼럼이 있고 데이터베이스에는 ActivityID라는 int 형 칼럼이 있습니다. 어떻게 해야 1-10 이 int형으로 datatable에 저장이 되서 데이터베이스로 업뎃이 될까요? 부탁드립니다.
public int UpdateTimeEntry(DataTable tblTimeEntry)
{
int updated = 0;
this.sqlDataAdaptor.SelectCommand.CommandText = "spTimeEntry_Select_Plain";
this.sqlDataAdaptor.SelectCommand.CommandType = CommandType.StoredProcedure;
this.sqlCommandBuilder = new SqlCommandBuilder(this.sqlDataAdaptor);
DataTable dt = this.tblTimeEntry.Clone();
dt.Columns["ActivityName"].DataType = typeof(Int32);
dt = tblTimeEntry;
foreach(DataRow dr in dt.Rows)
{
if(dr["ActivityName"].ToString() == "Review")
{
dr["ActivityName"] = 1;
}
else if(dr["ActivityName"].ToString() == "Webfile")
{
dr["ActivityName"] = 2;
}
else if(dr["ActivityName"].ToString() == "WebfileViaSkyscraper")
{
dr["ActivityName"] = 3;
}
else if(dr["ActivityName"].ToString() == "Prepare")
{
dr["ActivityName"] = 4;
}
else if(dr["ActivityName"].ToString() == "Export")
{
dr["ActivityName"] = 5;
}
else if(dr["ActivityName"].ToString() == "Print/Save")
{
dr["ActivityName"] = 6;
}
else if(dr["ActivityName"].ToString() == "Train")
{
dr["ActivityName"] = 7;
}
else if(dr["ActivityName"].ToString() == "Recon")
{
dr["ActivityName"] = 8;
}
else if (dr["ActivityName"].ToString() == "Straggler")
{
dr["ActivityName"] = 9;
}
else if (dr["ActivityName"].ToString() == "Others")
{
dr["ActivityName"] = 10;
}
else
{
MessageBox.Show("There is invalid ActivityName in records, fix and try");
}
}
dt.Columns["ActivityName"].ColumnName = "ActivityID";
foreach (DataRow dr in dt.Rows)
{
dr["ActivityID"] = Int32.Parse(dr["ActivityID"].ToString());
}
updated = this.sqlDataAdaptor.Update(dt);
return updated;
}
첫댓글 보통은 테이블에 코드( 위에서 말하는 int형 )을 가지고 있고
UI에서 맵핑을 하게 됩니다.
코드 관리를 별도로 하게 되고요 (코드, 코드명) 위에서 10, others 라는 코드형태로 DB에 저장을 하고 있게 됩니다. UI의 컨트롤에 combo 같은 컨트롤에 valuemember = "code", displaymember="codename" 으로 바인딩 하고
datasource에 코드테이블에서 조회한 데이타( 10 , others )를 바인딩하고 콤보.SelectedValue = 10; 하면
콤보는 실제로 others 가 보이게 되거든요...
힌트가 되셨기를 바랍니다.
으... 트라이 해보겠습니다. 답변 감사합니다^^