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;
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔