asp.net DataSet,DataTable,DateView的關係和用法

來源:互聯網
上載者:User

asp教程.net dataset,datatable,dateview的關係和用法
ataset就是一個臨時的小倉庫,通過sqldataapert,可相當於卡車,將資料從資料庫教程中通過適配器sqldataapert放到dataset中,所以即使斷開了串連,也照樣可以與資料庫打交道,下面看一個例子:

public static dataset query(string sqlstr)

      {

         using(oledbconnection conn=new oledbconnection(connstr))

         {

             try

             {

                 dataset ds = new dataset()

                 oledbdataadapter da = new oledbdataadapter();

                 da.fill(ds, "ds");

                 return ds;

             }

             catch (oledbexception e)

             {

                 throw new exception(e.message);

             }

         }

      }

可以看出基本用法,通過oledbdataadapter的fill方法將資料填充到dataset中,其中

da.fill(ds, "ds"); 後面的ds是表明,因為dataset中包含很多表,其實我們就是把資料添加到dataset的表中,這個在後面會講到,如果不寫,則以索引0開始

datatable dt=ds.tables[“ds”]

datatable dt=ds.tables[0];

 

下面我們有必要看看dataset的組成部分

dataset有很多datatable,datatable中有很多的dataview

datatable中有很多的datarow和datacolumn組成

獲得具體的值就是:

ds.tables[“表明”].rows[0][“列名字”]

 

dataview是顯示出來的視圖,比如我們要綁定到girlview的資料來源綁定中,為了顯示,就用到了dataview

dataview dv=new dataview();

dv.table=ds.tables[“”]

this.girlview.datasource=dv;

 

或者使用defaultview,這樣就不用執行個體化dataview了;

this.girlview.datasource= ds.tables[0].defaultview;

 

我們還可以dataview進行過濾

 

ds.tables[0].defaultview.rowfilter = "id=1";

或者

dataview dv=new dataview();

dv.rowfilter=”id=1”;

 

dataset的多表查詢

多表查詢或者資料量很大的時候我們都可以使用dataset,下面就看看使用dataset如何進行多表查詢,下面看個例子

public static dataset query(string sqlstring)
    {
        using (sqlconnection connection = new sqlconnection(connectionstring))
        {
            dataset ds = new dataset();
            try
            {
                connection.open();
                sqldataadapter command = new sqldataadapter(sqlstring, connection);
                command.fill(ds, "ds");
            }
            catch (system.data.sqlclient.sqlexception ex)
            {
                throw new exception(ex.message);
            }
            return ds;
        }
    }

string citysql = "select * from soncity;select * from partytype";
 ds= dbhelpersql.query(citysql);
 s1.datasource = ds.tables[0].defaultview;
 s1.datatextfield = "sonname";
 s1.databind();
 s2.datasource = ds.tables[1].defaultview;

 s2.datatextfield = "partytypename";
s2.databind();

從上面我們可以看出如何進行多表查詢了,sql語句可以寫多個,用分號隔開就可以了

string citysql = "select * from soncity;select * from partytype";

返回的時候就是按著索引從0開始返回表格

 s1.datasource = ds.tables[0].defaultview;

 s2.datasource = ds.tables[1].defaultview;

 

dataset和sqlcommand的關係

使用sqldataadapter 的時候不知道有沒有想過這樣的問題,為什麼資料庫不用開啟直接就可以串連了呢?在這裡我就來告訴大家原因:

  其實 資料庫的串連是隱式的被開啟的

sqldataadapter  sqldateadapter = new sqldataadapter(sql語句,connection);

 

其實它是隱式的替代了下面的代碼:

conn.open();

                sqlcommand cmd = new sqlcommand();

                cmd.commandtext = "select * from googs";

                cmd.commandtype = commandtype.text;

                cmd.connection = conn;

                sqldataadapter   sqldateadapter = new sqldataadapter();

                sqldateadapter.selectcommand = cmd;

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.