第七天學(xué)習(xí)目的:學(xué)會添加刪除修改記錄
以前我們在ASP中不管是添加還是刪除記錄或者用SQL語句加上EXECUTE()或者就是直接用RECORDSET的NEW、DELETE、UPDATE等方法來添加刪除修改記錄。在ASP.NET里面我們采用SQL語句加上COMMAND對象來執(zhí)行SQL語句的方法來添加刪除修改記錄。這比上次說的讀取記錄還簡單。實(shí)際上只有一點(diǎn)區(qū)別,把ExecuteReader()修改為ExecuteNonQuery()即可,因為我們不需要返回值啊。 string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source="; strConnection+=Server.MapPath(strDb); OleDbConnection objConnection=new OleDbConnection(strConnection); OleDbCommand objCommand = new OleDbCommand("這里是SQL語句" , objConnection); objConnection.Open(); OleDbDataReader objDataReader=objCommand.ExecuteNonQuery(); dim objConnection as OleDbConnection dim objCommand as OleDbCommand objConnection=new OleDbConnection(Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath(strDb)) objCommand=new OleDbCommand("這里是SQL語句" , objConnection) objConnection.Open() objDataReader=objCommand.ExecuteNoQuery()
下面再舉例子說明一下SQL語句(ACCESS): 添加記錄: insert int o 表名 (字段1,字段2) values (字符串1,字符串2) where 條件 刪除記錄: delete from 表名 where 條件 修改記錄: update 表名 set 字段1=××,字段2=×× where 條件
需要特別注意,如果是Sql Server刪除記錄是delete 表名,不需要再加from了。 今天就說到這里了,明天說ASP.NET里面最著名的DATAGRID。第八天學(xué)習(xí)目的:初步掌握DATAGRID的使用
以前在ASP中,我們顯示大批量數(shù)據(jù)經(jīng)常使用循環(huán)讀取記錄集的方式,在表格中插入代碼來顯示,循環(huán)的是<tr>,如果是分頁還需要自己制作,如果排序更加復(fù)雜,在ASP.NET中就好了,一切工作都可以讓DATAGRID來做。
首先看一下DATAGRID的樣式方面的屬性 BackImageUrl="" 背景圖片 CellSpacing="" 單元格間距 CellPadding="" 單元格填充 cssClass="" 使用的CSS樣式
DATAGRID可以自動用表中的字段名放在顯示的記錄的頭部來表示各個單元格所代表的意義,用ShowHeader="true/false"來控制是不是顯示,在大多數(shù)情況下我們是不需要這個功能的,因為我們數(shù)據(jù)庫中的字段名大多是英文的,而我們想在頁面輸出的大多是中文名字。
下面看一下顯示數(shù)據(jù)庫內(nèi)所有記錄,就幾行代碼:
<script runat="server" language="c#"> void Page_Load() { string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source="; strConnection+=Server.MapPath("guestbook.mdb"); OleDbConnection objConnection=new OleDbConnection(strConnection); OleDbCommand objCommand1 = new OleDbCommand("select * from guestbook",objConnection); objConnection.Open(); dgrdMain.DataSource=objCommand1.ExecuteReader();//dgrdMain就是下面的DATAGRID的ID dgrdMain.DataBind(); objConnection.Close(); } </script> <html> <body> <asp:DataGrid id="dgrdMain" cellpadding="1" showheader="true" borderwidth="0" runat="server" /> </body> </html>
至于VB的版本,這次大家自己來試試吧:)
假設(shè)數(shù)據(jù)庫是三個字段:id,aa,bb 顯示的樣子就如下: idaabb1werwerewrwe2werwerewrwe
我們一定覺得這種顯示不滿意,我們有兩種顯示的方式(需要包括在<columns></columns>中間):
一、默認(rèn)的列,我們可以選擇不輸出所有的字段還可以安排順序: <asp:BoundColumn DataField="想要顯示的字段名"> 比如說我們想按照bb,aa來輸出這個表,我們這么寫
<asp:DataGrid id="dgrdMain" cellpadding="1" showheader="true" autogeneratecolumns="false" borderwidth="0" runat="server"> <columns> <asp:boundcolumn datafield="bb"/> <asp:boundcolumn datafield="bb"/> </columns> </asp:datagrid>
注意使用了autogeneratecolumns="false"以后DATAGRID就不會自動輸出所有字段了。
二、以模板列,我們可以定制每一個單元格的樣式: <asp:TemplateColumn> <itemTemplate> 中間是一個表格,想怎么樣就怎么樣 </itemTemplate> </asp:DataGrid> 或許你們要說怎么在表格中輸出代碼那,可以使用<%# DataBinder.Eval(Container.DataItem,"字段名").ToString()%> 下面看一個例子,我們所要做的就是把a(bǔ)a,bb兩個字段放在一個單元格內(nèi)顯示,就好像下面一樣: 1werwe rewrwe 2werwe rewrwe 我們這樣寫代碼: <asp:DataGrid id="dgrdMain" cellpadding="1" showheader="false" autogeneratecolumns="false" borderwidth="0" runat="server"> <columns> <asp:boundcolumn datafield="ii"/> 首先使用默認(rèn)的顯示方式顯示ID <asp:TemplateColumn> 再使用模板來顯示后面一列(由AA,BB并列組成) <itemTemplate> <table border="0" cellspacing="0" cellpadding="0" width="100%"> <tr> <td><%# Container.DataItem("aa")%></td> </tr> <tr> <td><%# Container.DataItem("bb")%></td> </tr> </table> </itemTemplate> </asp:DataGrid> </columns> </asp:datagrid> 今天就說到這里,明天我們來看一下DATAGRID的分頁顯示等功能第九天學(xué)習(xí)目的:學(xué)會用DATAGRID分頁顯示
雖然說DATAGRID的分頁顯示效率不怎么高,但是不管怎么說,它是最方便的分頁顯示,對于做一個留言簿還是相當(dāng)簡單實(shí)用的。對于啟用分頁功能還有一個重要要求,只能在DATADRID控件的數(shù)據(jù)源實(shí)現(xiàn)了ICOLLECTION接口的情況下才能啟用分頁功能,而DATAREADER沒有這個接口,所以必須使用DATATABLE來代替。 <script runat="server" language="c#"> void Page_Load() { string strConnection="Provider=Microsoft.Jet.OleDb.4.0;Data Source="; strConnection+=Server.MapPath("guestbook.mdb"); OleDbConnection objConnection=new OleDbConnection(strConnection); OleDbDataAdapter objDataAdapter=new OleDbDataAdapter("select * from guestbook",objConnection); DataSet objDataSet=new DataSet(); objDataAdapter.Fill(objDataSet); dgrdMain.DataSource=objDataSet; dgrdMain.DataBind(); } void dgrdMain_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e) { dgrdMain.CurrentPageIndex = e.NewPageIndex; DataBind(); } </script> <html> <body> <asp:DataGrid id="dgrdMain" cellpadding="1" showheader="true" borderwidth="0" allowpaging="true" 啟用分頁功能 pagesize="3" 每一頁顯示三條記錄 onpageindexchanged="dgrdMain_pageindexchanged " 調(diào)用第×頁的函數(shù)為dgrdMain_PageIndexChanged() runat="server" /> </body> </html> <script runat="server" language="vb"> subPage_Load dim objConnection as OleDbConnection dim objDataAdapter as OleDbDataAdapter dim objDataSet as DataSet objConnection=new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("guestbook.mdb")) objDataAdapter=new OleDbDataAdapter("select * from guestbook",objConnection) objDataSet=new DataSet objDataAdapter.Fill(objDataSet) dgrdMain.DataSource=objDataSet dgrdMain.DataBind() end sub sub dgrdMain_PageIndexChanged(sender as object,e as datagridpagechangedeventargs) dgrdMain.CurrentPageIndex = e.NewPageIndex DataBind end sub </script> <html> <body> <asp:DataGrid id="dgrdMain" cellpadding="1" showheader="true" borderwidth="0" allowpaging="true" 啟用分頁功能 pagesize="3" 每一頁顯示三條記錄 onpageindexchanged="dgrdMain_pageindexchanged " 調(diào)用第×頁的函數(shù)為dgrdMain_PageIndexChanged() runat="server" /> </body> </html>
這樣就是最簡單的分頁,我們可以用參數(shù)pagestyle-mode="nextprev/numericpages"來設(shè)定是顯示上一頁、下一頁方式還是直接選擇頁面的數(shù)字方式來實(shí)現(xiàn)頁面跳轉(zhuǎn)。如果是前者我們可以用pagestyle-nextpagetext來設(shè)定包含下一頁鏈接的文本,用pagestyle-prevpagetext來設(shè)定包含上一頁鏈接的文本;如果是后者我們可以用PagerStyle-PageButtonCount來設(shè)定在使用省略號之前顯示的頁面編號數(shù)量(默認(rèn)是10)今天就說到這里,明天說一下SESSION和COOKIE。第十天學(xué)習(xí)目的:學(xué)會SESSION和COOKIE的使用
在各個網(wǎng)頁間的變量傳遞和一些記錄用戶的登陸信息要用到SESSION和COOKIE。在ASP.NET中使用COOKIE比ASP中稍微麻煩一點(diǎn),因為我們要申明變量。
首先看一下SESSION的使用,基本和ASP差不多 寫入一個SESSION:
Session["username"])="aa";Session("username")="aa"
讀取一個SESSINN:
string username= Session["username"];
dim username=Session("username")
再來看一下COOKIE的寫入: DateTime dt=DateTime.Now; //需要<%@Import Namespace="System"%>,得到當(dāng)前時間 HttpCookie mycookie=new HttpCookie("logname");//申明新的COOKIE變量 mycookie.Value="aa";//賦值 mycookie.Expires=Convert.ToDateTime(dt+TimeSpan.FromDays(1));//設(shè)定過期時間為1天 Response.Cookies.Add(mycookie1);//寫入COOKIE dim dt as DateTime dt=DataTime.Now dim mycookie as HttpCookie mycookie=new HttpCookie("logname") mycookie.Value="aa" mycookie.Expires=Convert.ToDateTime(dt+TimeSpan.FromDays(1)) Response.Cookies.Add(mycookie1)
看一下COOKIE的讀取:
HttpCookie mycookie=Request.Cookies["username"]; string username=mycookie.Value; dim mycookie as HttpCookie mycookie=Request.Cookies["username"] dim string=mycookie.Value到此《十天學(xué)會ASP.NET》結(jié)束了,時間倉促,還請大家原諒寫的不全,實(shí)際上我只是帶大家入門,學(xué)會還要靠自己啊。
|