親密接觸ASP.Net(7)
2024-07-10 12:55:26
供稿:網友
上一節,我們簡單的講了一下數據庫的應用,而我們沒有具體說明執行語句如何用于顯
示。呵呵,是留在這一章節中講的。這里我們必須得了解一下datareader,dataset和dat
agrid控件,datagrid是顯示控件,大家自已去看它相關的應用,我們在這里不哆嗦,da
tareader和dataset都可以用來儲存數據內容,不過datareader只能儲存查詢的結果,da
taset就相對來說復雜多了,他的功能很強大,我們一步步來講,這一節還講不完,我們
這一節只講其關于儲存數據庫的功能,呵呵,為了和datareader的講解嘛.
講數據庫,首先得有用的數據才行,我這里隨便搞了一個數據庫,名為company,再加了
幾條數據進去
datareader
datareader看名字就知道了,就是讀取數據,我們可以通過command的execute方法,將
取得的數據存入datareader,datareader有很多方法和屬性,常用的是read,這里我也不
想多講.我們還是先看看它的具體應用吧。
<% @ page language="c#" %>
<% @ import namespace="system.data" %>
<% @ import namespace="system.data.sql" %>
<script language="c#" runat="server">
public void page_load(object src,eventargs e)
{
//定義語句
string myselectquery = "select * from company";
string myconnstring="server=localhost;uid=sa;pwd=123456;database=aspcn";
//聯結
sqlconnection myconnection = new sqlconnection(myconnstring);
sqlcommand mycommand = new sqlcommand(myselectquery,myconnection);
myconnection.open();
//定義datareader
sqldatareader mydatareader;
//賦與datareader以結果
mycommand.execute(out mydatareader);
//將datareader與datagrid進行捆綁
show.datasource=mydatareader;
show.databind();
//關閉
mydatareader.close();
myconnection.close();
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<asp:datagrid id="show" runat=server headerstyle-backcolor="#aaaadd" />
</body>
</html>
在其中我們看到datareader的定義
sqldatareader mydatareader;
以及他的賦值
mycommand.execute(out mydatareader);
完成這兩步后,我們就將執行后的結果儲存到datareader中了。
最后我們就將其捆綁(bind)到datagrid控件上去,如果不明白捆綁是什么,看本系例的
文章吧
顯示如下: id name age sex wage
1 飛刀 20 男 1400
2 張三 23 男 5000
3 李四 47 男 7786
4 王五 20 男 6788
5 苗翠花 30 女 45676
6 方世玉 20 男 4656
另外告訴大家,如果我們需要取得datareader儲存特定字段的值可以使用mydatareader[
"fieldname"]類似的方法取得下面是個簡單的例子
.......
while (mydatareader.read())
{
response.write("<tr>");
response.write("<td>"+mydatareader["name"].tostring+"</td>");
response.write("</tr>");
}
.......
dataset
哇,這對于初學者來說,是個很難理解的東東啊。怎么說才好呢?我們可以把dataset看
成一個無聯結的recordset(這個大家應當熟悉吧).dataset中儲存有數據,而且這個就像
是一個數據庫,里面存在表(tables),列(columns),關聯(relationships),限制(cons
trains)以及數據。這一些和數據庫沒有什么兩樣,但是他不是數據庫(怎么越說越糊涂
),我們可以先在dataset中操作數據(添加,刪除,更新),最后再一并提交到數據庫
去操作。而且dataset中的數據不光可以來自于數據庫,還可以是xml以及其它的數據,
甚至用戶的輸入也能直接存入dataset
我們這里只談dataset對于數據的作用,呵呵,而且還只是數據的顯示。其它的應用,下
節再說,我們還是先看看一段例子吧。
<% @ page language="c#" %>
<% @ import namespace="system.data" %>
<% @ import namespace="system.data.sql" %>
<script language="c#" runat="server">
public void page_load(object src,eventargs e)
{
//定義語句
string myselectquery = "select * from company";
string myconnstring="server=localhost;uid=sa;pwd=123456;database=aspcn";
//聯結
sqlconnection myconnection = new sqlconnection(myconnstring);
sqldatasetcommand mydatasetcommand = new
sqldatasetcommand(myselectquery,myconnection);
dataset mydataset = new dataset();
//將結果儲存入dataset
mydatasetcommand.filldataset(mydataset,"company");
show.datasource=mydataset.tables["company"].defaultview;
show.databind();
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<asp:datagrid id="show" runat=server headerstyle-backcolor="#aaaadd" />
</body>
</html>
上面的顯示的結果和前面的一樣,我們來解釋一下代碼
此處我們使用了datasetcommand,我們就是需要通過它的filldataset方法,將查詢表co
mpany的結果存入dataset,具體的操作方法就是:
mydatasetcommand.filldataset(mydataset,"company");
以后的就是捆綁,也沒有什么好說的了。只是要注意一下,dataset是它的dataview與da
tagrid進行bind,這一原因我在前面的文章中已經說了。不懂的大家可以翻到前面看看,
多多看看源程序。
另外我們可以向一個dataset中加入多個表的查詢結果,這些結果的connection都可以不
同,這個實現起來很簡單,大家可以自已動手去做