天天看點

C#中DataSet的使用

DataSet的使用

  java中有result來擷取資料集,而c#中有Dataset來擷取資料集,那麼我們應該怎麼擷取資料集呢?下面說一下擷取資料集的幾種方式:

第一種: 把資料庫中的資料通過DataAdapter對象填充DataSet。

這種是比較簡單的方式,主要是通過dataAdapter中的fille和fillSchema方法來對資料集進行填充。

主要代碼如下:

class Test
    {
        //資料庫連接配接
        private OleDbConnection olecon;
        //指令
        private OleDbCommand olecom;
        //擴充卡
        private OleDbDataAdapter oledata;
        //建立list集合:隻存放student對象
        private List<student> list = new List<student>();
        //資料庫連結類
        private void link()
        {
            //資料庫連接配接語句
            string sqlcon = "provider=microsoft.jet.oledb.4.0;data source=./data.mdb";
            //建立資料庫連接配接對象
            olecon = new OleDbConnection(sqlcon);
            //打開資料庫連接配接
            olecon.Open();
            //插入的sql語句
            string addsql = "insert into Data.Test(test_name,test_grade,test_age) values ('張三','軟體一班','22')";
            //選擇的sql語句
            string selsql = "select * from Test";
            try
            {
                //建立添加指令,将資料添加到資料庫中
                olecom = new OleDbCommand(addsql, olecon);
                //執行指令
                olecom.ExecuteNonQuery();
                //測試是否添加成功
                Console.WriteLine("儲存成功");
                //建立選擇指令,将資料庫中的資料選擇
                olecom = new OleDbCommand(selsql, olecon);
                //得到oledbdataadapter對象,及dataset與資料之間的橋梁
                oledata = new OleDbDataAdapter(olecom);
               //  建立dataset資料集用來接收資料
                DataSet ds = new DataSet();
                //把獲得的資料賦給dataset資料集
                oledata.Fill(ds);
                //周遊資料集
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++) {
                    //擷取第一個表中第二列的所有值
                    string name = ds.Tables[0].Rows[i][1].ToString();
                    //擷取第一個表中第三列的所有值
                    string grade = ds.Tables[0].Rows[i][2].ToString();
                    //擷取第一個表中第四列的所有值
                    string age = ds.Tables[0].Rows[i][3].ToString();
                    //通過構造函數建構student對象
                    student st = new student(name,grade,age);
                    //将建構的對象添加到list集合中
                    list.Add(st);
                    //測試是否添加
                    Console.WriteLine("添加了"+i+"個");
                }
                foreach(student st in list){
                    //周遊list集合輸出所有資訊
                    Console.WriteLine("我的姓名:"+st.Name+"我的班級:"+st.Grade+"我的年齡"+st.Age);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("異常++" + ex.Message);
            }
            finally
            {
                //關閉資料庫
                olecon.Close();
                //釋放資源
                olecon.Dispose();
            }
        }
        private static void Main(String[] args)
        {
            //調用方法
            new Test().link();
            Console.ReadKey();
        }
    }
           

  第二種方式 把XML資料流或文本加載到DataSet

  由于ADO.NET2.0中增強了與XML檔案的結合,是以在這個時候DataSet中的資料可以從XML資料流或文檔建立。加載XML資料流和文檔到DataSet中是可使用DataSet對象的ReadXml方法。該ReadXml方法讀取 XML 流或文檔的内容并将資料加載到 DataSet 中。根據所指定的XmlReadMode和關系架構是否已存在,它還将建立DataSet的關系架構。

實作代碼如下所示:

DataSet ds= new DataSet("xmlds");

ds.ReadXml("c:\\databases.xml");