CF기반에서 c#코딩한 소스 봤습니다. 질문좀 드릴께요

rda = new SqlCeRemoteDataAccess( "http://192.168.0.3/Mobile/sscesa20.dll","", "", strCon );

rda.Pull( "userinfo", strSQL, strOleCon );

이 부분이 무엇을 하는것인지는 잘 모르겠습니다. 알려주시면
감사하겠습니다.

테스트 결과는 잘 나왔습니다. 좋은 자료 감사드립니다.

Compact Framework을 이용한 간단한 RDA 예제

요번에 VS.NET 2003 설치하구 잠깐 짬내서 해봤습니다.
MR은 서버 셋팅이 까다로와서 RDA방식으로 했구요.
EVC로 하다가 C#으로 하니 엄청 편하네여..@.@



=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


               private void button1_Click(object sender, System.EventArgs e)
               {

                       string strLocalDB = "\\NorthWind.sdf";
                       string strCon = "Provider=microsoft.sqlserver.oledb.ce.2.0;Data Source=" + strLocalDB;
                       string strOleCon = "provider=sqloledb; data source=192.168.0.2; Initial Catalog=NorthWind; user id=sa; password=sa";
                       string strSQL = "SELECT ProductID, ProductName, UnitPrice FROM Products";

                       // 기존 파일 삭제
                       System.IO.File.Delete( strLocalDB );


                       // Local DB 생성
                       SqlCeEngine engine = new SqlCeEngine( strCon );
                       engine.CreateDatabase();

                       System.Data.SqlServerCe.SqlCeRemoteDataAccess rda;
                       SqlCeConnection con;
                       SqlCeCommand cmd;
                       SqlCeDataReader reader;

                       try
                       {
                               

                               // RDA Pull
                               rda        = new SqlCeRemoteDataAccess( "http://192.168.0.2/mobile/sscesa20.dll",                
                                                                    "", "", strCon );
                               rda.Pull( "Products", strSQL, strOleCon );

                               // Local Open
                               con        = new SqlCeConnection( "Data Source = \\Northwind.sdf;" );
                               cmd = new SqlCeCommand( strSQL, con );
                               cmd.CommandType = CommandType.Text;

                               cmd.Connection.Open();
                               reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

                               while( reader.Read() )
                               {
                                       System.Windows.Forms.ListViewItem lvi;
                                       lvi = new ListViewItem( reader.GetValue(0).ToString() );
                                       lvi.SubItems.Add( reader.GetValue(1).ToString() );
                                       lvi.SubItems.Add( reader.GetValue(2).ToString() );

                                       listView1.Items.Add( lvi );
                                       
                               }

                               reader.Close();
                               con.Close();

                       }
                       catch(SqlCeException ex)
                       {
                               SqlCeErrorCollection errorCollection = ex.Errors;

                               StringBuilder bld = new StringBuilder();
                               Exception   inner = ex.InnerException;

                               if (null != inner)
                               {
                                       MessageBox.Show("Inner Exception: " + inner.ToString());
                               }

                               foreach (SqlCeError err in errorCollection)
                               {
                                       bld.Append("\n Error Code: " + err.HResult.ToString("X"));
                                       bld.Append("\n Message   : " + err.Message);
                                       bld.Append("\n Minor Err.: " + err.NativeError);
                                       bld.Append("\n Source    : " + err.Source);
           
                                       foreach (int numPar in err.NumericErrorParameters)
                                       {
                                               if (0 != numPar) bld.Append("\n Num. Par. : " + numPar);
                                       }
           
                                       foreach (string errPar in err.ErrorParameters)
                                       {
                                               if (String.Empty != errPar) bld.Append("\n Err. Par. : " + errPar);
                                       }

                                       MessageBox.Show(bld.ToString());
                                       bld.Remove(0, bld.Length);
                               }
                       }

               }

ListView의 컬럼 해더 클릭시 소트 구현

1. 폼 클래스의 맴버 변수를 선언 합니다.
public class form1 : System.Windows.Forms.Form
{
    // ListView의 정렬 방법을 저장하기위한
    private SortOrder[] arrSortOrder;


2. 리스트가 초기화 되는 부분에 아래 코드를 추가합니다.
   // 리스트의 값을 넣었으면.. 컬럼별 정렬 방법설정
arrSortOrder.Initialize();
arrSortOrder = new SortOrder[lvAddress.Columns.Count];
for(int i=0; i
    arrSortOrder[i] = SortOrder.None;



3. 해더클릭 이벤트를 아래와 같이 코딩합니다.
private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
  if ( arrSortOrder[e.Column] != SortOrder.Ascending )
       arrSortOrder[e.Column] = SortOrder.Ascending;
  else
       arrSortOrder[e.Column] = SortOrder.Descending;

  SortColumn ( e.Column );
}


4. 소트를 위한 비교 클래스를 아래와 같이 코딩합니다.
private class Comparer : IComparer
{
   private int m_Column;
   private bool m_bNumeric;
   private System.Windows.Forms.SortOrder m_SortOrder;

   public int Compare( object Object1 , object Object2 )
   {
       if( !(Object1 is ListViewItem) && !(Object2 is ListViewItem) )
       return 0;

       ListViewItem lv1 = (ListViewItem) Object1;
       ListViewItem lv2 = (ListViewItem) Object2;

      if ( m_SortOrder == System.Windows.Forms.SortOrder.Descending )
      {
       ListViewItem lvTemp;
       lvTemp = lv1;
       lv1 = lv2;
       lv2 = lvTemp;
       }

       if (m_bNumeric)
               return (Convert.ToInt32 (lv1.SubItems[m_Column].Text) -  Convert.ToInt32 (lv2.SubItems[m_Column].Text ));
       else
       return String.Compare( lv1.SubItems[m_Column].Text, lv2.SubItems[m_Column].Text );
   }

   public System.Windows.Forms.SortOrder SortOrder
   {
       set
       {
       m_SortOrder = value ;
       }
   }

   public bool bNumeric
   {
       set
       {
       m_bNumeric = value ;
       }
    }

    public int Column
    {
        set
        {
       m_Column = value ;
        }
     }
}


5. 컬럼소트함수를 작성합니다..
public void SortColumn( int iColumn )
{
   Comparer lvc = new Comparer ();

   lvc.SortOrder = arrSortOrder[iColumn];

   try
   {
       string s1 = listView1.Items[1].SubItems[iColumn].Text.ToUpper().Trim();
       long lng = Convert.ToInt32 (s1);
       lvc.bNumeric = true;
   }
   catch (Exception ex)
   {
       lvc.bNumeric = false;
   }

   lvc.Column = iColumn ;
   listView1.ListViewItemSorter = lvc;
}


뉴스그룹:microsoft.public.dotnet.framework.windowsforms의
Piyush(piy_9679@indiatimes.com)님
"Sort Multiple ListView Columns"소스를
오름/내림 차순 정렬이 가능하도록 수정했습니다.