SQL SERVER 2000'İN POCKET PC ÜZERİNDEN YÖNETİLMESİ

SQL SERVER 2000’İN POCKET PC ÜZERİNDEN YÖNETİLMESİ

SQL SERVER 2000"İN POCKET PC ÜZERİNDEN YÖNETİLMESİ -III

 

Geçen yazımızda Connection sınıfının verdiği servislere dış dünyadan erişimi sağlayacak olan XML Web Servislerini yazmıştık.Bu yazımızda ise SQL Query Analyzer benzeri bir programı mobil cihaz için yazacağız bu sayede uzaktaki Sql Server yüklü makineye XML Web Servisi aracılığı ile erişip Sql Server üzerinde işlem gerçekleştirebileceğiz.

I) Yeni bir Pocket PC uygulaması yaratıyoruz. LoginInfo enumeration’ını bu uygulamamız içerisinde yine impelente ederek her bağlantı detay bilgilerinin toplu bir şekilde durmasını sağlıyoruz. Daha sonra varsayılan olarak eklenen formumuzun login işlemini yapacak form olduğunu düşünerek adını FrmLogin olarak değiştiriyoruz. Şekil 1’deki gibi ekran tasarımımızı yapıyoruz.

Şekil 1 FrmLogin Formunun Ekran Tasarımı

II) XML Web Servisini kullanarak sunucuya bağlantı yapacak olan kod bloğu ise şu şekilde olacaktır. Sınıf içerisinde LoginInfo tipinde bir değişken yaratmayı unutmayınız.

   

private void btnBaglan_Click(object sender, EventArgs e)

{

    try

    {

       UpdateStatus("Veritabanına bağlanıyor...");

       loginInfo.sqlServer = txtSunucuAdi.Text;

       loginInfo.sqlLoginName = txtKullaniciAdi.Text;

       loginInfo.sqlPassword = txtSifre.Text;

       loginInfo.sqlDatabase = string.Empty;

       ConnectSQLService css = new ConnectSQLService();

 

       if (css.ConnectToSQL(txtSunucuAdi.Text, txtKullaniciAdi.Text, txtSifre.Text))

       {

          UpdateStatus("Bağlanıyor...");

          FrmMain frmMain = new FrmMain();

          frmMain.FillTreeView(loginInfo);

          frmMain.Show();

          this.Hide();

       }

       else

       {

          UpdateStatus("Bağlantı sağlanamadı...");

       }

     }

     catch (Exception ex)

     {

         MessageBox.Show(ex.Message.ToString());

     }

}

 

// Form Üzerindeki StatusBar"ın durumunu günceller

private void UpdateStatus(string sqlStatus)

{

     sqlStatusBar.Text = sqlStatus;

     sqlStatusBar.Refresh();

}

 

III) İptal tuşu ise uygulamadan çıkışı sağlayacaktır. Onun için İptal tuşunun implementasyon detayları atlanmıştır. Login aşaması bittikten sonra kullanıcının yetkili olduğu veritabanlarının listelendiği FrmMain formu gelecektir. FrmMain formunun ekran tasarımı Şekil 2’de gösterilmiştir.

 

Şekil 2 FrmMain Formunun Ekran Tasarımı

IV) Formumuz içinde kullanacağımız değişkenleri tanımlayalım ilk önce :

 

   

//XML Web Servisimizin bir örneğini yaratıyoruz

ConnectSQLService css = new ConnectSQLService();

// Sunucuda görmeye yetkili olduğumuz veritabanı listesini tutan nesne

DataSet ds = new DataSet();

LoginInfo loginInfo;//Bağlantı detaylarını tutar

//Üzerinde çalışılmak istenen veritabanının adını tutar

public string sqlDataBase;

 

V) Daha sonra sunucuya bağlanan kullanıcının görmeye yetkili olduğu veritabanlarını getirip TreeView’i dolduracak olan metodu yazalım.

 

public void FillTreeView(LoginInfo loginInfo)

{

  try

  {

     this.loginInfo = loginInfo;

     TreeNode newNode = new TreeNode(loginInfo.sqlServer);

     tvLeftPanel.Nodes.Add(newNode);

 

     newNode = new TreeNode("Databases");

     tvLeftPanel.SelectedNode = tvLeftPanel.Nodes[0];

     tvLeftPanel.SelectedNode.Nodes.Add(newNode);

     LoadDatabases();

  }

  catch (Exception ex)

  {

     MessageBox.Show(ex.Message.ToString());

  }

}

 

VI) Son olarak da menülerin tıklanma olaylarında çalışacak olan kod boklarını yazalım. Çıkış tuşu programdan çıkmayı sağladığından bu menü elemanının implementasyon detaylarını atlıyoruz.

   

//Menüden Refresh tıklanırsa veritabanı

//listesini güncelleyen blok

private void mItemRefresh_Click(object sender, EventArgs e)

{

   LoadDatabases();

}

 

//TreeView"in içine veritabanlarını ekleyen metot

private void LoadDatabases()

{

    TreeNode newNode = new TreeNode();

    if (tvLeftPanel.SelectedNode.Text == "Databases")

    {

        TreeNode selectedTreeNode = tvLeftPanel.SelectedNode;

        ds = css.GetDataBaseList();

        foreach (DataRow pRow in ds.Tables["Databases"].Rows)

        {

            string sNodeVal = pRow["DATABASE_NAME"].ToString();

            newNode = new TreeNode(sNodeVal);

            selectedTreeNode.Nodes.Add(newNode);

        }

     }

}

 

//Menüden Query Analyzer tıklanırsa

//Query Analyzer formunu getirecek blok

private void mItemQueryAnalyzer_Click(object sender, EventArgs e)

{

   sqlDataBase = tvLeftPanel.SelectedNode.Text;

   FrmQueryAnalyzer frmQueryAnalyzer = new FrmQueryAnalyzer();

   loginInfo.sqlDatabase = sqlDataBase;

   frmQueryAnalyzer.Init(loginInfo);

}

 

//Menüden ReLogin seçilirse Ana SQL sunucusuna tekrar

//bağlanmak için Login Formuna yönlendirir

private void mItemReLogin_Click(object sender, EventArgs e)

{

   try

   {

      FrmLogin frmLogin = new FrmLogin();

      frmLogin.Show();

   }

   catch (Exception ex)

   {

      MessageBox.Show(ex.Message.ToString());

   }

}

 

VII) Son olarak Query Analyzer işlevini yapacak olan formumuzun implementasyonuna sıra geldi. Bu formumuzu Şekil 3’deki gibi bir tane DataGrid, bir tane ToolBar, bir tane ImageList(tamamen görsel amaçlı eklenmektedir, atlanabilir.) ve bir tane metin kutusundan oluşturuyoruz.

Şekil 3 FrmQueryAnalyser’ın Ekran Tasarımı

Bu formumuzun arkaplanında yazdığımız kod bloğuna gelirsek:

  

public partial class FrmQueryAnalyzer : Form

{

   DataSet dsResults;

   ConnectSQLService css = new ConnectSQLService();

   LoginInfo loginInfo;

 

   public FrmQueryAnalyzer()

   {

      InitializeComponent();

   }

 

   public void Init(LoginInfo loginInfo)

   {

      this.loginInfo = loginInfo;

      this.Text = "Query Analyser - " + loginInfo.sqlDatabase;

      css.SetDataBaseName(loginInfo.sqlDatabase);

      this.Show();

   }

 

   //Toolbar"ımıza tıklandığı zaman

   //çalışacak olan kod bloğu

   private void toolBarMenu_ButtonClick(object sender, ToolBarButtonClickEventArgs e)

   {

     string sqlQuery;

     switch (toolBarMenu.Buttons.IndexOf(e.Button))

     {

      case 0://Sorguyu çalıştırmak için

             //gerekli işlemleri yap

             sqlQuery = txtQuery.SelectedText;

             if (sqlQuery.Trim() == "")

             {

                MessageBox.Show("Çalıştırılacak sorguyu seçiniz!");

                break;

             }

             dsResults = new DataSet();

             dsResults = css.ReturnResult(sqlQuery);

             dgResults.DataSource = dsResults.Tables[0];

                break;

         case 1:

                //Çalıştırmayı İptal Et!

                break;

     }

    }

}

 

Bu uygulama ile mobil cihazımızda Query Analyzer yüklü olmasa bile uzaktaki SQL sunucusuna bağlanıp bu sunucu üzerinde sorgu çalıştırabilmekteyiz. Bu uygulama henüz giriş aşamasındaki fikri vermektedir. Bu uygulamaya veri ekleme, değişiklik yapma ve silme gibi ek işlevler de kazandırılarak tam anlamıyla SQL sunucusu üzerindeki veritabanları üzerinde yönetim gerçekleştirilebilir.

Döküman Arama

Başlık :

Kapat