親密接觸ASP.Net(7)
發(fā)表時(shí)間:2024-02-21 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]上一節(jié),我們簡(jiǎn)單的講了一下數(shù)據(jù)庫(kù)的應(yīng)用,而我們沒有具體說明執(zhí)行語(yǔ)句如何用于顯示。呵呵,是留在這一章節(jié)中講的。這里我們必須得了解一下DataReader,DataSet和DataGrid控件,DataGrid是顯示控件,大家自已去看它相關(guān)的應(yīng)用,我們?cè)谶@里不哆嗦,DataReader和DataSet...
上一節(jié),我們簡(jiǎn)單的講了一下數(shù)據(jù)庫(kù)的應(yīng)用,而我們沒有具體說明執(zhí)行語(yǔ)句如何用于顯示。呵呵,是留在這一章節(jié)中講的。這里我們必須得了解一下DataReader,DataSet和DataGrid控件,DataGrid是顯示控件,大家自已去看它相關(guān)的應(yīng)用,我們?cè)谶@里不哆嗦,DataReader和DataSet都可以用來儲(chǔ)存數(shù)據(jù)內(nèi)容,不過DataReader只能儲(chǔ)存查詢的結(jié)果,DataSet就相對(duì)來說復(fù)雜多了,他的功能很強(qiáng)大,我們一步步來講,這一節(jié)還講不完,我們這一節(jié)只講其關(guān)于儲(chǔ)存數(shù)據(jù)庫(kù)的功能,呵呵,為了和DataReader的講解嘛.
講數(shù)據(jù)庫(kù),首先得有用的數(shù)據(jù)才行,我這里隨便搞了一個(gè)數(shù)據(jù)庫(kù),名為Company,再加了幾條數(shù)據(jù)進(jìn)去
DataReader
DataReader看名字就知道了,就是讀取數(shù)據(jù),我們可以通過Command的Execute方法,將取得的數(shù)據(jù)存入DataReader,DataReader有很多方法和屬性,常用的是Read,這里我也不想多講.我們還是先看看它的具體應(yīng)用吧。
<% @ 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)
{
//定義語(yǔ)句
string mySelectQuery = "SELECT * from Company";
string myConnString="server=localhost;uid=sa;pwd=123456;database=aspcn";
//聯(lián)結(jié)
SQLConnection myConnection = new SQLConnection(myConnString);
SQLCommand myCommand = new SQLCommand(mySelectQuery,myConnection);
myConnection.Open();
//定義DataReader
SQLDataReader myDataReader;
//賦與DataReader以結(jié)果
myCommand.Execute(out myDataReader);
//將DataReader與DataGrid進(jìn)行捆綁
show.DataSource=myDataReader;
show.DataBind();
//關(guān)閉
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);
完成這兩步后,我們就將執(zhí)行后的結(jié)果儲(chǔ)存到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儲(chǔ)存特定字段的值可以使用myDataReader["fieldname"]類似的方法取得下面是個(gè)簡(jiǎn)單的例子
.......
while (myDataReader.Read())
{
Response.Write("<tr>");
Response.Write("<td>"+myDataReader["Name"].ToString+"</td>");
Response.Write("</tr>");
}
.......
DataSet
哇,這對(duì)于初學(xué)者來說,是個(gè)很難理解的東東啊。怎么說才好呢?我們可以把DataSet看成一個(gè)無(wú)聯(lián)結(jié)的RecordSet(這個(gè)大家應(yīng)當(dāng)熟悉吧).DataSet中儲(chǔ)存有數(shù)據(jù),而且這個(gè)就像是一個(gè)數(shù)據(jù)庫(kù),里面存在表(Tables),列(Columns),關(guān)聯(lián)(relationships),限制(constrains)以及數(shù)據(jù)。這一些和數(shù)據(jù)庫(kù)沒有什么兩樣,但是他不是數(shù)據(jù)庫(kù)(怎么越說越糊涂),我們可以先在DataSet中操作數(shù)據(jù)(添加,刪除,更新),最后再一并提交到數(shù)據(jù)庫(kù)去操作。而且DataSet中的數(shù)據(jù)不光可以來自于數(shù)據(jù)庫(kù),還可以是XML以及其它的數(shù)據(jù),甚至用戶的輸入也能直接存入DataSet
我們這里只談DataSet對(duì)于數(shù)據(jù)的作用,呵呵,而且還只是數(shù)據(jù)的顯示。其它的應(yīng)用,下節(jié)再說,我們還是先看看一段例子吧。
<% @ 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)
{
//定義語(yǔ)句
string mySelectQuery = "SELECT * from Company";
string myConnString="server=localhost;uid=sa;pwd=123456;database=aspcn";
//聯(lián)結(jié)
SQLConnection myConnection = new SQLConnection(myConnString);
SQLDataSetCommand myDataSetCommand = new SQLDataSetCommand(mySelectQuery,myConnection);
DataSet myDataSet = new DataSet();
//將結(jié)果儲(chǔ)存入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>
上面的顯示的結(jié)果和前面的一樣,我們來解釋一下代碼
此處我們使用了DataSetCommand,我們就是需要通過它的FillDataSet方法,將查詢表Company的結(jié)果存入DataSet,具體的操作方法就是:
myDataSetCommand.FillDataSet(myDataSet,"Company");
以后的就是捆綁,也沒有什么好說的了。只是要注意一下,DataSet是它的DataView與DataGrid進(jìn)行Bind,這一原因我在前面的文章中已經(jīng)說了。不懂的大家可以翻到前面看看,多多看看源程序。
另外我們可以向一個(gè)DataSet中加入多個(gè)表的查詢結(jié)果,這些結(jié)果的Connection都可以不同,這個(gè)實(shí)現(xiàn)起來很簡(jiǎn)單,大家可以自已動(dòng)手去做