실버라이트에서 웹서비스를 통해 DB를 받아오는 방법은 몇가지가 있습니다.
그중 서버탐색기와 린큐를 이용한 방법을 다루 겠습니다.
테이블의 저장을 위해 웹서비스에 메소드를 만듭니다.
public string SetList(string strA, string strB, string strC)
{
string strReturn = "";
msComm = new SqlCommand("ListSet", msConn);
msComm.CommandType = CommandType.StoredProcedure;
msComm.Parameters.Add("@strA", SqlDbType.VarChar).Value = strA;
msComm.Parameters.Add("@strB", SqlDbType.VarChar).Value = strB;
msComm.Parameters.Add("@strC", SqlDbType.VarChar).Value = strC;
//커낵션 오픈
msConn.Open();
try
{
msComm.ExecuteNonQuery();
strReturn = "성공";
}
catch (Exception e)
{
strReturn = "실패";
}
//커낵션 클로즈
msConn.Close();
//리턴
return strReturn;
}
서버 탐색기와 린큐를 이용하여 데이터를 받아오는 방법입니다.
서버설정만하면 코드 몇줄로 데이터를 받을수 있다는 장점이 있습니다.
1.프로젝트에 'LINQ to SQL 클래스'를 추가 합니다.
2-1. 서버탐색기를 엽니다.
2-2. 데이터 연결에서 오른쪽클릭을 하고 '연결 추가'를 클릭합니다.
2-3. 'Microsoft SQL Server' 를 선택하고 계속을 누릅니다.
2-4. 서버이름이 서버 주소를 적고 SQL인증정보를 넣고 '연결 테스트'를 누릅니다.
2-5. '테스트 연결에 성공했습니다.' 메시지가 표시 되면 재대로 연결이 된겁니다.
2-6. 확인을 누릅니다.
3. 서버 탐색기에 서버가 표시됩니다.
사용하려는 테이블이 보이는지 확인 합니다.
4. 아까 만든'LINQ to SQL 클래스'를 열어 서버탐색기에서 테이블을 끌어다가 클래스 위에 올려 놓습니다.
아래 처럼 테이블이 표시됩니다.
불러오기용 웹서비스 메소드를 추가 합시다.
매개변수는 아까 드래그 해서 받은 테이블을 리스트로 선언합니다.
public List<tb_WebServiceTest> GetListDB()
{
DataClasses1DataContext db = new DataClasses1DataContext();
var oTable = from A in db.tb_WebServiceTest
select A;
return oTable.ToList(); // LINQ로 뽑아낸 내용을 List 형대로 변환해 리턴한다.
}
리스트를 받을때는 리절트를 ToList()로 받으시면 됩니다.
private void butGet_DB_Click(object sender, System.Windows.RoutedEventArgs e)
{
//리스트 DB 받기
sc.GetListDBAsync();
}
void sc_GetListDBCompleted(object sender, ServiceReference1.GetListDBCompletedEventArgs e)
{
//리스트 겟 - DB
dgDB.ItemsSource = (List)e.Result.ToList();
}
A,B,C칸에 데이터를 넣고 '리스트 셋'을 누르면 데이터가 입력됩니다.
'리스트겟 - DB'을 누르면 DB에 있는 데이터가 넘어옵니다.
린큐를 이용하면 DB에 비하인드 코드적으로 접근할수 있다는 장점이 있습니다.
웹서비스에서 이용하면 모든 컬럼을 받을때 정말 유용합니다. 처리하고 자시고도 없저 ㅎㅎㅎ
제가 린큐를 재대로 못쓰는건지 원하는 컬럼만 뽑는게 안되더라고요 ㅡ,.ㅡ;;
아시는 분은 덧글좀;;;
그래서 테이블을 통체로 꺼내거나 할때 주로 사용합니다.