မင်္ဂလာပါ!

လှိုက်လှဲစွာကြိုဆိုပါသည်။ ယခု ပထမဆုံးအကြိမ် ရောက်ဖူးခြင်းဖြစ်ပါသလား? ဝင်ရောက် ဆွေးနွေး မေးမြန်းလိုပါလျှင် အောက်တွင်ဖော်ပြထားသော button များမှတဆင့် ဝင်ရောက် ဆွေးနွေးနိုင်သကဲ့သို့ အဖွဲ့ဝင်အသစ်အနေဖြင့်လည်း လျှောက်ထားနိုင်ပါတယ်။

MYSTERY ZILLION တွင် English သို့မဟုတ် Unicode ဖြင့်သာ အသုံးပြုခွင့်ရှိသည်။ ဇော်ဂျီ ၊ ဧရာ စသည်တို့ကို အသုံးပြုခွင့် မရှိ။ Unicode fonts များမှာ Mon3,Yunghkio, Myanamr3 စသည်များ အသုံးပြုနိုင်သည်။ Unicode Guide ကို ဒီမှာ Download ချပါ။ Zawgyi to Unicode Converter
Don't share ebook or software if nobody request. You can find free book websites on here. We are welcome for discussion or asking question instead.

ADO .NET in C#

edited February 2010 in C#
ကျနော်တို ့ ADO .NET အကြောင်း ဒီနေရာလေးမှာ ဆွေးနွေးကြရအောင်ဗျာ.... ကျနော်လဲ ၀င်ဆွေးနွေးမှာပါ.. ဒါပေမဲ့ လောလောဆယ် ဘယ်ကစရမှန်း မသိဘူး... :confused: အဆင်ပြေသလိုပဲ စကြတာပေါ့ဗျာ.. :1: ခုမှ စလေ့လာမဲ့သူတွေအတွက် technoloy ကို အရင်ဆွေးနွေးဖို ့မသင့်ဘူးထင်တယ်.. ကျနော်ကလဲ ကိုယ်တိုင်သာ နားလည်တာ.. သူတပါးကို ရှင်းပြဖို ့က အဲလောက်ထိ အရည်အချင်း ရှိတာ မဟုတ်ဘူးရယ်.. ကျနော်တော့ ကျနော်လေ့လာဖူးတဲ့ samples လေးတွေ အရင် တင်ပေးလိုက်ရင် ကောင်းမလားလို ့.. အစ်ကို အစ်မတို ့ကော ဘယ်လို သဘောရလဲ.. ဒါဆို မသိတဲ့သူတွေလဲ ADO ဒိုးနပ် ဆိုတာ စားစရာလို ့မမြင်လောက်တော့ဘူးပေါ့ :cool: ကျနော်လေ့လာဖူးတဲ့ sample တစ်ခု၊ နှစ်ခုကို တတ်နိုင်သလောက် အရင် ရှင်းပြကြည့်ပါအုံးမယ်.. သိတဲ့ တတ်တဲ့ အစ်ကို အစ်မတို ့လဲ ကျနော့်လို တတ်ယောင်ကားလေးကို ဒီအတိုင်းကြီး မျက်နှာလွဲ ခဲပစ်တော့ မလုပ်ကြနဲ ့ အုံးဗျနော်.. အမှားအယွင်းလေးတွေကို ပြင်ပေးကြပါအုံး.. ၀င်ဆွေးနွေးကြပါအုံး... ကဲ စရအောင်


// ဖိုရမ် ရုံးအဖွဲ ့သို ့
/* ကျနော် ကြည့်သလောက်တော့ ADO.NET နဲ ့ပါတ်သတ်လို ့ တင်ထားတဲ့ Thread မတွေ ့လို ့ အသစ်လုပ်လိုက်တာပါ။ ဒါပေမဲ့ ကျနော်က ဒီနေ ့မှ ၀င်လာတဲ့ member အသစ်ဆိုတော့ ဘယ်ဟာ ဘယ်နေရာရှိမှန်း သေချာ မသိသေးဘူး။ တကယ်လို ့ ရှိပြီးသားဆိုရင် ကျနော့် ပို ့စ်တွေ ရွှေ ့လို ့ရအောင် အသိပေးပါခင်ဗျာ။ */

မှတ်ချက်များ

  • edited February 2010 Registered Users
    ADO.NET

    ADO.NET ဆိုတာ data and data services တွေ access လုပ်နိုင်ဖို ့အတွက် programmers တွေ အသုံးပြုကြတဲ့ technology တစ်ခုပါပဲ။ ADO.NET က Microsoft .NET Framework ထဲက base class library (FCL) ထဲက အစိတ်အပိုင်း တစ်ခုပါပဲ။ သူ ့ကို များသောအားဖြင့် DBMS database systems ထဲမှာ storage လုပ်ထားတဲ့ data တွေကို access လုပ်ဖို ့၊ modify လုပ်ဖို ့အတွက် programmers တွေက အသုံးပြုကြပါတယ်။ ဥပမာ Microsoft Access လို database system လိုမျိုးပေါ့...

    ADO.NET ဆိုတာ Microsoft SQL Server လိုမျိုး Oracle လိုမျိုး data sources တွေကို access လုပ်နိုင်တဲ့ technolgy ပါပဲ။ သူ ့မှာ database တစ်ခုကို connect လုပ်ဖို ့အတွက် data provider တွေပါမယ်၊ execute လုပ်ဖို ့အတွက် commands တွေပါမယ်။ ADO.NET ကို C# အသုံးပြုပြီးတော့ Microsoft Access, Microsoft SQL Server, MySQL လို open-source တွေနဲ ့ Oracle တို ့နဲ ့ ချိတ်ဆက် အသုံးပြုလို ့ရပါတယ်။

    ဒါက ADO.NET အတွက် brief ပေါ့ဗျာ.. နောက်ပိုင်းမှာ သူ ့ရဲ ့ technology ကို ကျနော်သိသလောက် ဆက်လက်ပြီး ဆွေးနွေးပါအုံးမယ်။ လောလောဆယ် code လေးတွေ ရေးကြည့်ရအောင်.....

    ADO = ActiveX Data Objects


    Thanks for reading my posts!!
    see u around, buddy!!
    have a nice day!!
  • edited February 2010 Registered Users
    How to Bind data to Windows Forms DataGridView Control

    DataGridView Control
    SQL Server မှာ ဖြစ်ဖြစ်၊ Access မှာဖြစ်ဖြစ် ကျနော်တို ့ database တစ်ခု ဆွဲလိုက်တယ်ပေါ့။ အဲဒါဆို tables တွေ ပါလာပြီ။ DataGridView Control ကို သုံးလိုက်ခြင်းအားဖြင့် အဲဒီ့ data sources တွေက data တွေကို display လုပ်လို ့ရမယ်။ modify လုပ်လို ့ရပါမယ် ။ အဲတော့ ဘယ်လို လုပ်မလဲ။

    ConnectionString: ပထမဆုံး connection stirng တစ်ခု အရင်ရှိရမယ်။ ဆိုလိုတာက Database က ဘယ်ကလဲ။ Microsoft Access ကလား၊ SQL Server ကလား၊ Oracle ကလား၊ MySQL ကလား စသဖြင့်ပေါ့။ အဲဒီ့လို Data Provider တွေနဲ ့ပါတ်သတ်တဲ့ string တစ်ခုရှိမယ်။

    DataAdapter: သူက ဘာလုပ်ပေးလဲဆိုတော့ Database ထဲက data တွေကို DataSet ထဲကို ထည့်သွင်းတဲ့နေရာမှာ သူက ကြားခံပဲ။ တံတားတစ်ခုလိုပေါ့။ Database နဲ့ DataSet အကြား data တွေကို retrieve လုပ်ပေးမယ်၊ save လုပ်ပေးမယ်။ သူ ့မှာ Fill() ဆိုတဲ့ method နဲ ့ data source ထဲက data တွေနဲ ့ dataSet ထဲက data တွေကို match လုပ်ပေးမယ်။ ပြီးရင် DataSet ထဲမှာ data တွေကို အသစ်ထပ်ထည့်တာ၊ ဖျက်ပစ်တာ စသဖြင့် လုပ်လိုက်ရင်လဲ သူက Data source မှာ ပြန်ပြီး အဲလိုဖြစ်အောင် လုပ်ဖို ့အတွက် Update() ဆိုတဲ့ method ရှိတယ်၊ စသဖြင့် အဲဒါတွေကို dataAdapter က လုပ်ဆောင်ပေးတယ်။ အဲဒီ့မှာ data provider အမျိုးမျိုးအလိုက် SQL Server ဆိုရင် SqlDataAdapter ၊ OLEDB ဆိုရင် OLeDbDataAdapter ၊ Oracle နဲ ့ဆိုရင် Oracle ဘာညာပေါ့ စသဖြင့် အဲလိုတော့ keywords တွေ ကွဲမယ်။

    DataSet
    သူက ADO.NET ရဲ ့ အဓိက အစိတ်အပိုင်းတစ်ခုပဲ။ သူ ့မှာ Data Table Objects တွေ အများကြီးပါတယ်။ database မှာ tables တွေ အချင်းချင်း connect လုပ်သလို ADO.NET မှာ DataTable တွေ connect လုပ်လို့ ရအောင် သူက လုပ်ပေးနိုင်တယ်။ အောက်မှာ သူလုပ်ဆောင်ပုံ အချို ့ကို ကြည့်ကြည့်ပါအုံး ..
    • Build and fill each DataTable in a DataSet with data from a data source using a DataAdapter.
    • Change the data in individual DataTable objects by adding, updating, or deleting DataRow objects.
    • Invoke the GetChanges method to create a second DataSet that features only the changes to the data.
    • Call the Update method of the DataAdapter, passing the second DataSet as an argument.
    • Invoke the Merge method to merge the changes from the second DataSet into the first.
    • Invoke the AcceptChanges on the DataSet. Alternatively, invoke RejectChanges to cancel the changes.


    CommandBuilder

    ခင်ဗျားက SQL သုံးမယ်ဆိုရင်တော့ SqlCommandBuilder ပေါ့၊ OLEDB ဆိုရင် OleDbCommandBuilder .. data provider အလိုက် keyword တွေ ကွဲတာတော့ ထပ်မပြောတော့ဘူးဗျာ.. သူက ဘာလုပ်ပေးလဲဆိုတော့ dataAdapter က DataSet ထဲက SQl commands တွေကို တိုက်ရိုက်ကြီး Update မလုပ်ပေးနိုင်ဘူး။ sql သုံးတယ်ပဲ ထားလိုက်ပါတော့.. ကျနော်တို ့ Database ထဲက data တစ်ခုကို SQlCommand သုံးပြီး ဆွဲထုတ်လိုက်တယ် ဆိုပါတော့ .. ဥပမာ ကျောင်းသူ ကျောင်းသားနဲ ့သက်ဆိုင်တဲ့ database table ကပဲ ထားလိုက်ပါတော့.. အဲကနေ ကျနော်တို့ လိုချင်တဲ့ ကျောင်းသူကို ဆွဲထုတ်မယ်။ အသက် ၂၀ ဖြစ်ရမယ်၊ မော်လမြိုင်သူ ဖြစ်ရမယ်၊ အပျိုဖြစ်ရမယ်၊ ဘာညာ သာရကော ပေါ့။ အဲဒီ့ selected command ကို ပြန်ပြီး insert, update, delete လုပ်မယ်ဆိုရင် Command Builder ကို အသုံးပြုရမယ်။

    ကဲ အစကနေ ရှင်းရှင်းလေး ပြန်ပြောပြမယ်။
    Database ထဲက Data တွေကို DataSet ထဲထည့်၊ DataSet ထဲကနေ Bindingsource နဲ ့ Windows Controls (DataGridView) တွေပေါ် တင်။ နောက်ဆုံး ကျနော်တို ့ Database ထဲကို လှမ်းပြီး insert, update, delete စသဖြင့် လှမ်းလုပ်လို ့ရသွားပြီပေါ့ဗျာ။

    Microsoft Visual Studio ....
    Console Application မှာ အောက်က code လေး ရေးပြီးတော့ စမ်းကြည့်ပါ။
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Windows.Forms;
    using System.Drawing;
    
    public class Form1 : System.Windows.Forms.Form
    {
        private DataGridView dataGridView1 = new DataGridView();
        private BindingSource bindingSource1 = new BindingSource();
        private SqlDataAdapter dataAdapter = new SqlDataAdapter();
        private Button reloadButton = new Button();
        private Button submitButton = new Button();
    
        [STAThreadAttribute()]
        public static void Main()
        {
            Application.Run(new Form1());
        }
    
        public Form1()
        {
            dataGridView1.Dock = DockStyle.Fill;
    
            reloadButton.Text = "reload";
            reloadButton.BackColor = Color.Green;
            submitButton.Text = "submit";
            submitButton.BackColor = Color.Blue;
            reloadButton.Click += new System.EventHandler(reloadButton_Click);
            submitButton.Click += new System.EventHandler(submitButton_Click);
    
            FlowLayoutPanel panel = new FlowLayoutPanel();
            panel.Dock = DockStyle.Top;
            panel.AutoSize = true;
            panel.Controls.AddRange(new Control[] { reloadButton, submitButton });
    
            this.Controls.AddRange(new Control[] { dataGridView1, panel });
            this.Load += new System.EventHandler(Form1_Load);
            this.Text = "DataGridView databinding and updating demo";
        }
    
        private void Form1_Load(object sender, System.EventArgs e)
        {
            // Bind the DataGridView to the BindingSource
            // and load the data from the database.
            dataGridView1.DataSource = bindingSource1;
            GetData("select * from Customers");
        }
    
        private void GetData(string selectCommand)
        {
            try
            {
                String connectionString =
                    "Integrated Security=SSPI;" +
                    "server=(local)\\SQLEXPRESS; Database=Northwind;";
    
                dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
    
                // to update the database
                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
    
                // Populate a new data table and bind it to the BindingSource.
                DataTable table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                dataAdapter.Fill(table);
                bindingSource1.DataSource = table;
    
                // Resize the DataGridView columns to fit the newly loaded content.
                dataGridView1.AutoResizeColumns(
                    DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
            }
            catch (SqlException)
            {
                MessageBox.Show("To run this example, replace the value of the " +
                    "connectionString variable with a connection string that is " +
                    "valid for your system.");
            }
        }
    
        private void reloadButton_Click(object sender, System.EventArgs e)
        {
            // Reload the data from the database.
            GetData(dataAdapter.SelectCommand.CommandText);
        }
    
        private void submitButton_Click(object sender, System.EventArgs e)
        {
            // Update the database with the user's changes.
            dataAdapter.Update((DataTable)bindingSource1.DataSource);
        }
    }
    
    Output
    stE3DSPLpP.jpg
    Fig1_1

    scroll bar အောက်ဆုံးထိ ဆွဲချလိုက်ရင် ဘယ်ဘက်မှာ sterisk လေးနဲ ့ row တစ်ခုအောက်ဆုံးမှာ ပေါ်နေလိမ့်မယ်။ အဲဒီ့မှာ ကျနော်တို ့ ထည့်ထပ်ချင်တဲ့ data ထပ်ထည့်လို ့၇တယ်။ ပြီးရင် submit နဲ ့ reload button တွေကို click လိုက်ပါ။

    Fig1_2 မှာ ကျနော် data အသစ် သုံးခု ထပ်ထည့်ပါတယ်။
    Fig1_3 မှာ ကျနော် ထည့်ထားတဲ့ data ကို ပြထားပါတယ်။

    oc5hjtxZFX.jpg
    Fig1_2

    GuuWENf2IV.jpg
    Fig1_3

    How To Works
    ကျနော်တို ့က SQL Server ကို အသုံးပြုမှာဖြစ်တဲ့အတွက် namespace ကို System.Data.SqlClient ပေးဖို ့လိုပါမယ်။
     String connectionString =
                    "Integrated Security=SSPI;" +
                    "server=(local)\\SQLEXPRESS; Database=Northwind;";
    
    Visual Studio တင်ရင် Microsoft SQL Server Database Engine ပါပါတယ်။ အဲဒီ့အတွက် သူ ့ကို SSMSEE (Microsoft SQL Server Management Studio Express Edition) တင်ဖို ့လိုပါမယ်။
    http://www.microsoft.com/downloads/details.aspx?FamilyId=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=en
    အဲဒီ့မှာ SQLServer2005_SSMSEE.msi file ကို download လုပ်ပြီး တင်လိုက်ပါ။

    ဒီ sample က Northwind ကို အသုံးပြုထားတာပါ။ စက်ထဲမှာ Northwind.mdf ရှိနေဖို ့လိုပါမယ်။
    http://microsoft-sql-server-2000-sample-databas.software.informer.com/
    အဲဒီ့မှာ download လုပ်ပြီး တင်လိုက်ပါ။ အဲဒါဆို run လို ့ရပါပြီ။



    /* ဖတ်ရတဲ့သူတွေတော့ နားလည်ရဲ ့လား မသိဘူး။ ကျနော်တော့ ဒီပို ့စ်လေးရေးတာ (၃)နာရီကျော်ကျော် ကြာသွားတယ်။ ကိုယ်မနိုင်တဲ့ဟာကို သွားလုပ်မိသလိုဖြစ်တာ။ ADO.NET ကလဲ technology တစ်ခုသပ်သပ်ဆိုတော့ သူကလဲ အကျယ်ကြီးပဲ။ နောက်ထပ် သူနဲ ့ ပါတ်သတ်တဲ့ DataReader, Exception, Parameter တွေ အများကြီးပဲ ပြောဖို ့ကျန်သေးတယ်။ အားမရဘူးဗျာ။ နောက်မှ သေချာ လိုက်ဖတ်ပြီး ရေးအုံးမယ်။ ခုတော့ sorry ပါဗျာ။ ဒီလောက်ပဲ ရှင်းပြနိုင်လို ့။ မှားယွင်းနေတာရှိရင် ပြင်ပေးသွားကြပါအုံး။ လိုအပ်နေတာတွေ ရှိရင်ကောပေါ့ .. သိတဲ့တတ်တဲ့ အစ်ကိုတွေ အစ်မတွေ ညီတွေ ညီမတွေ ... */

    ok!!
    Thanks for reading my posts!!
    See u around, buddy!!
    Have a nice day!!
  • edited February 2010 Administrators
    အဖော်မရှိဘူး ဖြစ်နေမှာစိုးလို့ ဝင်ပြောပေးမယ် ဘယ်ဟာတွေ ဆွေးနွေးပေးရမလဲပြော။ ပြောမယ်သာပြောရတယ် ကျွန်တော်က အဲဒါတွေကို မဖတ်တာကြာလို့ မေ့နေတာကိုကြာပါပြီ။ ဆွေးနွေးမယ် ငြင်းခုန်မယ်ဆိုရင် ကူညီနိုင်ပါတယ် :P အငြင်းကတော့ အင်မတန်သန်တယ်ခင်ဗျ။ အခုရေးထားတွေ ကြည့်လိုက်တော့ စာသင်သလိုဖြစ်နေတယ် သဘောတူမယ်ဆိုရင် အဲဒါတွေကို edu ကိုရွှေ့ပေးမယ် ဖိုရမ်ထဲမှာက နောက်ဆိုရင် ဘယ်နားရေးမိမှန်းမသိဘူး ပျောက်သွားလိမ့်မယ်။ ဒီတော့ edu မှာ Post တွေတင်ပြီးတော့ ဖိုရမ်မှာက အဲဒီ့ဘက်က နားမလည်တာကို မေးမယ်ဆိုရင် ပိုအဆင်ပြေမယ်ထင်တယ် သဘောတူမတူ တစ်ချက်ပြန်ပြောပေးပါ။
  • edited February 2010 Registered Users
    DataGridView ဆိုတာ database tables တွေကို control ပေါ် data bind ဖို ့အတွက် အသုံးပြုတာတော့ အထက်က post မှာကတည်းက နားလည်ခဲ့ပြီ ထင်ပါတယ်။ အရင် post မှာက sql keywords တွေနဲ ့ အသုံးပြုခဲ့ပါတယ်။ အခုက အရင် post မှာ သေချာ မရှင်းလင်းခဲ့တာကို တတ်နိုင်သမျှ နားလည်သဘောပေါက် အောင် ကျနော် ကြိုးစားပေးပါမယ်။ ဒီတစ်ခါ OleDb က support ပေးတဲ့ keywords တွေနဲ ့ အသုံးပြုပါမယ်။ OleDb ဆိုတာ ဘာလဲ ? အကြမ်းဖျဉ်း သိရအောင် အောက်က Definition ကို တစ်ချက် ဖတ်ကြည့်ပါ။


    What is OLE DB ??

    (Object Linking and Embedding, Database, sometimes written as OLEDB or OLE-DB)
    OLE DB is Microsoft's strategic low-level application program interface API for access to different data sources. OLE DB includes not only the Structured Query Language (SQL) capabilities of the Microsoft-sponsored standard data interface Open Database Connectivity (ODBC) but also includes access to data other than SQL data.

    User Interface အတွက် အောက်ကပုံအတိုင်း ကျနော် ဖန်တီးလိုက်ပါတယ်။

    oledb3.jpg

    ကျနော်ကတော့ Windows Forms Application ကို သုံးပြီး ဆွဲထားတာ မဟုတ်ပါဘူး။ Console Application နဲ ့ပဲ ဆွဲထားတာပါ။ Windows Forms က လွယ်ကူမြန်ဆန်ပေမဲ့ လေ့လာနေဆဲသူတွေအတွက် Windows Controls တွေရ ဲ့ သဘောတရားတွေ၊ property တွေကို သိနေဖို ့အတွက် Console Application နဲ ့ UI ဆွဲတာဟာ အကောင်းဆုံးဖြစ်မယ်လို ့ကျနော်ထင်ပါတယ်။ ခင်ဗျားတို့လဲ အဲလိုလိုက်လုပ်ဖို ့ ကျနော် တိုက်တွန်းပါတယ်။ နောက် ကျွမ်းကျင်သွားတော့မှ Windows Forms န ဲ့ ဆွဲပေ့ါဗျာ။

    TextBox property : Mutiline -> true
    btnQuery property : Text -> Query, Name -> btnQuery
    btnUpdate property : Text -> Update, Name -> btnUpdate


    ကျနော်တို ့က OleDb ကို Microsoft Access database နဲ ့ ချိတ်ဆက်ဖို ့ အသုံးပြုတာ ဖြစ်ပါတယ်။ ဒီတော့ Microsoft Access database ကို ချိတ်ဆက်ဖို ့အတွက် OleDb classes တွေကို အသုံးပြုရမယ်ဆိုတဲ့ သဘောတရားပေါ့။ ဟုတ်ရဲ ့လား။ OleDb အတွက် namespace က System.Data.OleDb ဖြစ်ပါတယ်။

    program က Microsoft Access database နဲ ့ ချိတ်ဆက်ပေးထားတယ်။ data တွေကို ရှာဖို ့ရယ်၊ ပြင်ချင်တဲ့ data တွေရှိရင် ပြင်နိုင်အောင်ရယ် Query Button တစ်ခု၊ Update Button တစ်ခု၊ Button နှစ်ခု ထည့်ထားပါတယ်။ TextBox မှာက user အနေနဲ ့ သူလိုချင်တဲ့ data ကို သူ ့ဘာသာ Command ရိုက်ပြီး ရှာနိုင်အောင် စီစဉ်ပေးထားတယ်။ Microsoft Access Database ကို ကိုယ့်ဘာသာ ရေးချင်လဲ ရေး။ .mdb extension ဖြစ်ဖို ့လိုပါမယ်။ ဒါမှမဟုတ် Northwind က support ပေးထားတဲ့ Northwind.mdb database ကို သုံးချင်သုံး။ program မှာတော့ Northwind ကို သုံးပြီး စမ်းပြထားပါတယ်။ Northwind.mdb အတွက် ဒီမှာ ဒေါင်းပါ။

    ကဲ program ကို ကြည့််ရအောင်။ user က သူလိုချင်တဲ့ Command ကို TextBox မှာ ရိုက်လိုက်ပြီးရင် သူက ရှာဖို ့အတွက်ဆိုရင် Query Button ကို click မယ်။ ပြင်ဖို ့အတွက်ဆိုရင် Update Button ကို click မယ်။ အဲတော့ ဒီ Button နှစ်ခုရဲ ့အလုပ်တွ ကြည့်ရအောင်။ ပထမဆုံး Query Button ကို ကြည့်မယ်။

    ပထမဆုံး connectionString တစ်ခု ဆောက်ပါမယ်။ ဒီတစ်ခါ provider က Access database ဖြစ်တဲ့အတွက် Microsoft ဖြစ်ပါတယ်။ data source က Northwind database ကို အသုံးပြုထားပါတယ်။ ကိုယ့်ဘာသာ ရေးလဲရပါတယ်။ .mdb extension ဖြစ်ရပါမယ်။ ဒါပေမဲ့ ပြည့်ပြည့်စုံစုံ လိုချင်ရင်တော့ Northwind.mdb ကို ဒီမှာ ဒေါင်းပြီး အသုံးပြုပါ။ Northwind.mdb ကို ကျနော်က E (drive letter) ထဲမှာ ထည့်ထားလို ့E:\Northwind.mdb ဖြစ်နေတာပါ။ ခင်ဗျားအနေနဲ ့ Northwind ရှိတဲ့ path ကို ပြောငး်ပေးပါ။ OleDbConnection class နဲ ့ connection ဆောက်လိုက်ပါတယ်။ ပြီးရင် user အနေနဲ ့ သူ လိုချင်တဲ့ Command ရိုက်မှာဖြစ်တဲ့အတွက် OleDbCommand class ထဲက CreateCommand() method ကို အသုံးပြု ရပါမယ်။

    user အနေနဲ ့ Command မရိုက်ခင်၊ ဒါမှမဟုတ် တစ်ခုရိုက်ပြီးလို ့ နောက်တစ်ခု မရိုက်ခင်မှာ အဆင်သင့်ဖြစ်နေ အောင် dataGridView ကို clean ဖြစ်နေဖို ့လိုပါမယ်။ DatSet ကို fresh ပေးဖို ့ လိုပါမယ်။ ဒီအတွက် dataGridView1.DataSource ကို null ပေးထားပါတယ်။ DataSet ကို DataSet() method သုံးပြီး refresh ပေးထားပါတယ်။ ပြီးရင် connection ကို ဖွင့်ပါပြီ။ user က Command ကို textBox မှာ ရိုက်မှာဖြစ်တဲ့အတွက် အဲထဲက string ကို ခုန ဖန်တီးထားတဲ့ OleDbCommand class ထဲက Createcommand() method ထဲက CommandText ထဲကို ထည့်လိုက်ပါပြီ။ ပြီးရင် DataAdapter တစ်ခုဆောက်ပြီး Fill() method အသုံးပြုပြီး DataSet ထဲကို data တွေ ထည့်လိုက်ပါတယ်။ နောက်ဆုံး DataSet ထဲက data တွေကို dataGridView ထဲကို ထည့်လိုက်ပါတယ်။

    အဲဒီမှာ တစ်ခု သတိထားမိဖို ့ လိုတာက ds.Tables[0] ဆိုတာ ကျနော်တို ့လက်ရှိ data table တစ်ခုတည်းကို အသုံးပြုတယ်လို ့ဆိုလိုတာပါ။ zero က index no ကို ပြတာဖြစ်ပါတယ်။ ဆိုတော့ table နှစ်ခုဆိုရင် tables[1] လို ့ဖြစ်ပါမယ်။ ပြီးရင် နောက်ထပ် သတိထားရမှာက connection တစ်ခုကို ဖွင့်ပြီးရင် ပြန်ပိတ်ဖို ့မမေ့ပါနဲ ့။ အကယ်၍ မပိတ်ခဲ့ဘူးဆိုရင် တခြားတစ်နေရာမှာ ဒီ data source ကိုပဲ ပြန်အသုံးပြုဖို ့ရှိမယ်ဆို conflict ဖြစ်ပါတယ်။ ဒီတော့ သုံးပြီးရင် Close() method နဲ ့ ပြန်ပိတ်ဖို ့မမေ့ပါနဲ ့။
    private void btnQuery_Click(object sender, EventArgs e)
        {
            String connString =
                @Provider=Microsoft.JET.OLEDB.4.0; data source=E:\Northwind.mdb;
            OleDbConnection conn = new OleDbConnection(connString);
            OleDbCommand cmd = conn.CreateCommand();
    
            dataGridView1.DataSource = null;
            DataSet ds = new DataSet();
            conn.Open();
            cmd.CommandText = textBox1.Text;
            OleDbDataAdapter oleDbda = new OleDbDataAdapter(cmd);
            oleDbda.Fill(ds);
            conn.Close();
            dataGridView1.DataSource = ds.Tables[0];
        }
    
    Update Button အတွက်တော့ တစ်ခုပဲ ပြောစရာ ရှိပါတယ်။ သူက Command class ထဲက ExecuteNonQuery() method ကို အသုံးပြုထားပါတယ်။ ExecuteNonQuery() method က records တွေကို update and delete လုပ်ပေးနိုင်ပါတယ်။ ပြီးတော့ အဲဒီ့ modify လုပ်လိုက်တဲ့ rows အရေအတွက် ဘယ်နှခု ရှိလဲဆိုတာလဲ return လုပ်ပေးနိုင်ပါတယ်။ ဒီအတွက် affected ဆိုတဲ့ variable ကို int data type ထားပြီး အောက်မှာ row ဘယ်နှခု update လုပ်သွားလဲဆိုတာ MessageBox နဲ ့ display လုပ်ထားပါတယ်။
    private void btnUpdate_Click(object sender, EventArgs e)
        {
            String connString =
                @Provider=Microsoft.JET.OLEDB.4.0; data source=E:\Northwind.mdb;
            OleDbConnection conn = new OleDbConnection(connString);
            OleDbCommand cmd = conn.CreateCommand();
    
            dataGridView1.DataSource = null;
            conn.Open();
            cmd.CommandText = textBox1.Text;
    
            int affected = cmd.ExecuteNonQuery();
            MessageBox.Show("There were " + affected + " rows affected");
            conn.Close();
    
    Output
    ပုံတွေကို သေချာ လေ့လာကြည့်ပါ။

    oledb4.jpg

    oledb5.jpg

    oledb6.jpg

    ဒီလောက်ဆို ပြည့်စုံပြီ ထင်ပါတယ်။ ကိုယ့်ဘာသာ စမ်းကြည့်လိုက်ပါ။ လိုအပ်တာရှိရင်လဲ ပြောပေါ့။
    မူရင်းလင့်ခ် -- http://en.csharp-online.net/Working_with_Data%E2%80%94Using_the_DataGridView





    ok!!
    Thanks for reading my posts!!
    See u around, buddy!!
    Have a nice day !
  • edited February 2010 Registered Users
    အဖော်မရှိဘူး ဖြစ်နေမှာစိုးလို့ ဝင်ပြောပေးမယ် ဘယ်ဟာတွေ ဆွေးနွေးပေးရမလဲပြော။ ပြောမယ်သာပြောရတယ် ကျွန်တော်က အဲဒါတွေကို မဖတ်တာကြာလို့ မေ့နေတာကိုကြာပါပြီ။ ဆွေးနွေးမယ် ငြင်းခုန်မယ်ဆိုရင် ကူညီနိုင်ပါတယ် :P အငြင်းကတော့ အင်မတန်သန်တယ်ခင်ဗျ။ အခုရေးထားတွေ ကြည့်လိုက်တော့ စာသင်သလိုဖြစ်နေတယ် သဘောတူမယ်ဆိုရင် အဲဒါတွေကို edu ကိုရွှေ့ပေးမယ် ဖိုရမ်ထဲမှာက နောက်ဆိုရင် ဘယ်နားရေးမိမှန်းမသိဘူး ပျောက်သွားလိမ့်မယ်။ ဒီတော့ edu မှာ Post တွေတင်ပြီးတော့ ဖိုရမ်မှာက အဲဒီ့ဘက်က နားမလည်တာကို မေးမယ်ဆိုရင် ပိုအဆင်ပြေမယ်ထင်တယ် သဘောတူမတူ တစ်ချက်ပြန်ပြောပေးပါ။


    ဟုတ်ကဲ့ခင်ဗျာ.. ဖိိုရမ်အုပ်ချူပ်သူတွေ ဖြစ်သင့်တယ်ထင်လို ့ စီစဉ်ပေးတာကို ကျနော့်အနေနဲ ့ ငြင်းစရာ မရှိပါဘူးခင်ဗျာ... အားပေးတဲ့အတွက်လဲ ၀မ်းသာပါတယ်။ ကျေးဇူးပါပဲခင်ဗျာ။ ကျနော့်အနေနဲ ့တော့ ဘယ်နေရာမှာပဲ ရေးရ၊ ရေးရ အရေးမကြီးပါဘူး။ လို်အပ်တဲ့ တစ်ယောက်ယောက် ရသွားမယ်ဆို ကျေနပ်တာပါပဲ။ စာသင်သလို ဖြစ်နေတယ်ဆိုတဲ့အတွက်တော့ :P .. ကျနော်လဲ မသိဘူး။ ဘေးလူတွေကတော့ မြင်မှာပေါ့။ ကျနော်ကတော့ ကျနော် ရေးတတ်သလို ရေးလိုက်တာပါပဲဗျာ။ စာရေးတာဆိုလို ့ ဒီလိုမျိုး ရေးဖူးတာပဲ ရှိတယ်။ တခြားဟာတွေ ရေးဖူးတာ မရှိတော့ စာအသွားအလာ သိပ်မတတ်ဘူး ဖြစ်နေမယ်ထင်တယ်။ ကျနော်က မသိသေးတဲ့သူတွေ အသေးစိတ် ရစေချင်တာပါ။ ၀မ်းသာရမှာလား၊ ၀မ်းနည်းရမှာလား တော့ သေချာမသိဘူး။ ဆရာလေသံပေါက်နေရင်တော့ နောက်သေချာလေ့လာပြီး ကလေးတွေကို သင်ပေးအုံးမှပါ။ :D ဘာပဲပြောပြော ဂရုတစိုက် ကြည့်ပေးဖော်ရတဲ့အတွက် ၀မ်းသာပါတယ်။ member ၀င်ထားတာကလဲ ၂ ရက်လားပဲ ဖိုရမ်အကြောင်းတော့ သိပ်မသိသေးဘူး။ ကျေးဇူးပါပဲ ကိုလူပျိုကြီး .. ဒါနဲ ့ အပျိုကြီး ကော ရှိသေးလား ဒီမှာ.. :D ..
  • edited February 2010 Administrators
    green leaf wrote: »
    ဟုတ်ကဲ့ခင်ဗျာ.. ဖိိုရမ်အုပ်ချူပ်သူတွေ ဖြစ်သင့်တယ်ထင်လို ့ စီစဉ်ပေးတာကို ကျနော့်အနေနဲ ့ ငြင်းစရာ မရှိပါဘူးခင်ဗျာ... အားပေးတဲ့အတွက်လဲ ၀မ်းသာပါတယ်။ ကျေးဇူးပါပဲခင်ဗျာ။ ကျနော့်အနေနဲ ့တော့ ဘယ်နေရာမှာပဲ ရေးရ၊ ရေးရ အရေးမကြီးပါဘူး။ လို်အပ်တဲ့ တစ်ယောက်ယောက် ရသွားမယ်ဆို ကျေနပ်တာပါပဲ။ စာသင်သလို ဖြစ်နေတယ်ဆိုတဲ့အတွက်တော့ :P .. ကျနော်လဲ မသိဘူး။ ဘေးလူတွေကတော့ မြင်မှာပေါ့။ ကျနော်ကတော့ ကျနော် ရေးတတ်သလို ရေးလိုက်တာပါပဲဗျာ။ စာရေးတာဆိုလို ့ ဒီလိုမျိုး ရေးဖူးတာပဲ ရှိတယ်။ တခြားဟာတွေ ရေးဖူးတာ မရှိတော့ စာအသွားအလာ သိပ်မတတ်ဘူး ဖြစ်နေမယ်ထင်တယ်။ ကျနော်က မသိသေးတဲ့သူတွေ အသေးစိတ် ရစေချင်တာပါ။ ၀မ်းသာရမှာလား၊ ၀မ်းနည်းရမှာလား တော့ သေချာမသိဘူး။ ဆရာလေသံပေါက်နေရင်တော့ နောက်သေချာလေ့လာပြီး ကလေးတွေကို သင်ပေးအုံးမှပါ။ :D ဘာပဲပြောပြော ဂရုတစိုက် ကြည့်ပေးဖော်ရတဲ့အတွက် ၀မ်းသာပါတယ်။ member ၀င်ထားတာကလဲ ၂ ရက်လားပဲ ဖိုရမ်အကြောင်းတော့ သိပ်မသိသေးဘူး။ ကျေးဇူးပါပဲ ကိုလူပျိုကြီး .. ဒါနဲ ့ အပျိုကြီး ကော ရှိသေးလား ဒီမှာ.. :D ..

    အဲဒါဆိုရင် edu မှာထည့်ဖို့ ပြောလိုက်ဦးမယ် C# ရယ် အခု ADO ရယ်ကိုတစ်ခါတည်း ပို့လိုက်မယ်။ အပျိုကြီးကလိုက်ပြေးသွားလို့ လူပျိုကြီးဖြစ် အဲအဲ ဟုတ်သေးပါဘူး မဆိုင်တာတွေ ရောက်ကုန်ပါပြီ :P
  • Registered Users
    ညီမက C# Programming ကိုလေ့လာနေတဲ့သူပါ
    မ၀င်ဖြစ်တာများလို့ စည်ကမ်းဖောက်သလိုဖြစ်နေရင် ဆုံးမပေးပါ......... :-D
    အကြောင်းအရာတိုက်ဆိုင်လို့ မေးလိုက်တာပါ .......

    DatagridView ထဲ Bind လိုက်တဲ့ data တွေက များနေတယ် record သောင်းနဲ့ချီရှိမယ်ဆိုရင် တစ်ခါတည်း bind လိုက်ရင်တော်တော်လေးနေပါတယ်
    အဆင်ပြေမဲ့နည်းလေး လမ်းညွှန်ပေးပါ
  • Registered Users
    Pls, brother,
    In Console Application(ur eg1), i'm not ok in connection string.
    String connectionString =
    \"Integrated Security=SSPI;\" +
    \"server=(local)\\SQLEXPRESS; Database=Northwind;\";

    i have vs2008 professional edition with buit in MS SQLserver2005 and i have Northwind. (C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples)


    အစ်ကိုတို့ ရှင်းပြထားတာတွေကို ဖတ်ပြီး လေ့လာနေတာ ၁ပတ် ရှိပါပြီ
    ဘေးမှ သူငယ်ချင်းတစ်ယောက်က သေချာရှင်းပြ နေသလိုကို ရေးသားထားတာကိုလဲ အားလုံးကိုယ်စား လေးစား ချီးကျူး ပြီး ကျေးဇူးတင်ရှိပါတယ်..
  • edited December 2011 Registered Users
    this stuff is QUITE outdated. and guess what wikipedia page is outdated as well. i thought i was gonna look for some easy copy and paste stuff. i will probably fill that in when i have a bit more time but for now people should read up on the following to get a sense of where ado.net fit in.

    this is from the skeleton of wiki outline.
    object-relational mapping(this is a general concept which is getting real popular, in .net world, entity framework and nhibernate are popular)
    linq to sql (people should only read this as a side curiosity, linq2sql has been superseded by entity framework). on the other hand linq itself is very very useful and any seasoned .net developer should know what it is and how to use it.
    the idea of directly mapping objects to relational db structures automatically is also commonly called POCO(plain old clr objects) to "something". the basic concept is "code-first", you write the class files to most naturally reflect the business world you are trying to model instead of starting from relational tables where it may be quite awkward to describe certain concepts(table joins, which result from a need to optimize are quite weird to conceptualize since they most often than not do not conform to real world object hierarchy).

    to bridge this gap microsoft has released ado.net entity framework(last version 4.1). I recently has to work on an unpleasant task of converting a mongodb-based solution to mssql. for whoever is interested, here's a minimal solution project that demonstrate how to get it up and running. as a side bonus this one also works more or less automatically with mysql :P. (http://zawlin.s3.amazonaws.com/MysqlEfSample.zip)

    if the magic is not happening, pls let me know lol. i dint really test this one properly before uploading

  • Registered Users
    @poohphyoe, if you are somehow following this which i kinda doubt. but anyway, if you are dealing with wpf, you should read up on UI virtualization.

    this is usually a problem with UI frameworks. even though database is capable of handling hundreds of thousands of data rows, when it comes to showing it, somehow the data grids or table controls can't handle it. The reason why is because the creation of UI objects is very resource intensive, thousands of UI objects can easily go to hundreds of megabytes of memory. so the solution is to avoid creating those UI objects and provide an illusion of many many data row availaibty by using some form of paging. after all a user only see at most a few hundred data rows at any one instance. so you only have to create that many, instead of a thousands which will start to tax memory and then virtual memory and then the sluggishness start to happen.
  • Registered Users

    I want to how to display Myanmar3 font in Datagridview Column Header and Cell.

  • Registered Users

    choose font as myanmar3 :D

Sign In or Register to comment.