1
ASP.NET 網頁設計入門(使用 C#)
講師︰唐士軒
CSIE NTU
Access 資料庫 (1)
z建立資料庫
z選擇 [檔案] 中的 [開新檔案] 會跳出開新檔 案視窗,在視窗新增部份選取 [空白資料庫]
z設定完檔案儲存位置後會跳出下圖視窗
Access 資料庫 (2)
z建立資料表
z選擇資料庫視窗中的 [使用設計檢視建立資
料表]
Access 資料庫 (3)
z儲存資料表
z當關閉資料表視窗時,系統即會詢問是否要 儲存資料表等資訊
z資料表操作
z開啟
–輸入資料 z設計檢視
–修改資料表
欄位設定
ADO .NET
zADO.NET 為 .NET Framework 所提供的 類別,專門用來存取『資料儲存體』中 的資料
z『資料儲存體』包含資料庫或非資料庫 型式的儲存體
zEx︰MSSQL、Access、Excel、XML
zADO.NET 採用中斷連線的方式,減低系
統工作負載
.NET 資料提供者
z .NET 資料提供者為存取資料來源的一組類別 z .NET Data Provider
z SQL .NET Data Provider
z命名空間︰System.Data.SqlClient
z可用資料庫︰MS-SQL
z OLE DB .NET Data Provider
z命名空間︰System.Data.OleDb
z可用資料庫︰ Dbase、FoxPro、Excel、Access、Oracle、
Access…
z ODBC .NET Data Provider
z需至微軟網站另外下載
z可用資料庫︰ MySQL…
Connection 物件
z ADO.NET 的 Connection 物件用來連接資料來 源,代表使用者與資料來源間的連線
z 利用『連線字串』來描述所要連線的資料來源 z 連接 Access 資料庫連線字串格式
z Provider–Microsoft.Jet.OLEDB.4.0 z Data source–資料庫檔案所在路徑
z OleDbConnection 類別
z 常用屬性
zConnectionString–取得或設定連線字串 (可於建構式設定)
z 常用方法
zOpen–開啟資料庫連線
zClose–關閉連線
實例探討 sample6-a1 (1)
z 程式功能
z 建立與資料庫間的連線
z 程式內容
private void Page_Load(object sender, System.EventArgs e) {
Response.Write("尚未連線..<br>");
string dataSource = Server.MapPath("member.mdb");
string connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" +dataSource;
實例探討 sample6-a1 (2)
z 程式內容
OleDbConnection conn =
new OleDbConnection(connectionStr);
Response.Write("\r\n進行連線..<br>");
conn.Open();
Response.Write("\r\n連線成功..<br>");
conn.Close();
Response.Write("\r\n關閉連線..<br>");
}
Command 物件
z Command 物件可以用來執行所要對資料庫操 作的命令
z 建構式中可傳入 SQL 命令及 Connection 物件 z 常用方法
z ExecuteReader
z用來執行 Command 物件中的 SQL 查詢語法– SELECT
z取得資料後會回傳一個 DataReader 物件供使用者瀏覽資料
z ExecuteNonQuery
z用來執行 Command 物件中的 SQL 新增、刪除及修改語
法–INSERT、DELETE 及 UPDATE
DataReader 物件
z DataReader 物件可用來逐一取得資料表中的資料 內容
z 可利用 物件["欄位名稱"] 來取得特定欄位資料 z 常用屬性
z FieldCount–取得資料總筆數
z 常用方法
z Read–讀取下一筆資料,已至檔案結尾回傳 false,
尚未到達檔案結尾回傳 true z Close–關閉釋放此物件資源
z GetName–取得欄位名稱
z GetValue–取得欄位資料內容
SQL 結構化查詢語言
zSQL 結構化查詢語言是一套標準的語言,
用以管理或存取資料庫 zSQL 主要包含二部份
zDML 資料處理語言
z包含 SELECT、INSERT、UPDATE 及 DELETE…
zDDL 資料定義語言
z包含 CREATE、DROP、ALTER 及 GRANT…
SQL 語法–SELECT
zSELECT 查詢命令可用來取得資料表中 的資料
z語法
zSELECT 欄位名稱1, 欄位名稱2, … FROM 資料表名稱 WHERE 條件式 ORDER BY 欄 位名稱 (字串需以單引號 ' 括住表示之)
z用法
zselect * from student
zselect id,name from student order by id desc
zselect id from student where id<10
實例探討 sample6-a2 (1)
z 程式功能
z 會員管理系統
z 程式內容–WebForm1.aspx
private void loginBTN_Click(object sender, System.EventArgs e)
{
if(idTB.Text!= "" && pwTB.Text != "") {
if(check(idTB.Text, pwTB.Text))
Response.Redirect("WebForm2.aspx");
else
messageLB.Text = "帳號密碼輸入錯誤!!";
實例探討 sample6-a2 (2)
z程式內容–WebForm1.aspx
else
messageLB.Text = "帳號密碼不可空白!!";
}
private bool check(string id, string pw) {
string dataSource = Server.MapPath("member.mdb");
string connectionStr =
@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" +dataSource;
OleDbConnection conn = new
OleDbConnection(connectionStr);
實例探討 sample6-a2 (3)
z 程式內容–WebForm1.aspx
string sqlStr = "select * from member " ;
sqlStr+= "where id='" + id + "' and pw='"+pw+"'";
OleDbCommand command = new OleDbCommand(sqlStr, conn);
conn.Open();
OleDbDataReader dataReader = command.ExecuteReader();
bool flag = dataReader.Read();
dataReader.Close();
conn.Close();
return flag;
}
實例探討 sample6-a2 (4)
z程式內容–WebForm2.aspx
private void Page_Load(object sender, System.EventArgs e) {
string dataSource = Server.MapPath("member.mdb");
string connectionStr =
@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" +dataSource;
OleDbConnection conn = new
OleDbConnection(connectionStr);
實例探討 sample6-a2 (5)
z 程式內容–WebForm2.aspx
string sqlStr = "select * from member ";
OleDbCommand command = new OleDbCommand(sqlStr, conn);
conn.Open();
OleDbDataReader dataReader = command.ExecuteReader();
memberDG.DataSource = dataReader;
memberDG.DataBind();
dataReader.Close();
conn.Close();
}
課堂練習 sample6-b1
z程式功能
z建立討論區主題列表畫面
z基本概念
z建立一資料表,內含主題、內容、文章發表 者、瀏覽人數及回覆人數等欄位
z利用 Access 填入幾筆資料
z利用 select 語法取得資料表中資料
z需引用命名空間 System.Data.OleDb
SQL 語法–INSERT
zINSERT 新增命令用來新增一筆資料至指 定資料表中
z語法
zINSERT INTO 資料表名稱 ( 欄位名稱1, 欄位 名稱2, …) VALUES ('資料1', '資料2', …)
z用法
zINSERT INTO student(id, name) VALUES(3,
'Ives')
實例探討 sample6-a3 (1)
z程式功能
z新增會員帳號
z程式內容–WebForm1.aspx
private string connectionStr;
private OleDbConnection conn;
private OleDbCommand command;
實例探討 sample6-a3 (2)
z程式內容–WebForm1.aspx
private void Page_Load(object sender, System.EventArgs e) {
string dataSource = Server.MapPath("member.mdb");
connectionStr = @"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" +dataSource;
conn = new OleDbConnection(connectionStr);
command = new OleDbCommand("", conn);
upDG();
}
實例探討 sample6-a3 (3)
z程式內容–WebForm1.aspx
private void upDG() {
command.CommandText = "select * from member";
conn.Open();
OleDbDataReader dataReader = command.ExecuteReader();
memberDG.DataSource = dataReader;
memberDG.DataBind();
dataReader.Close();
conn.Close();
}
實例探討 sample6-a3 (4)
z 程式內容–WebForm1.aspx
private void addDB(string id, string pw) {
command.CommandText =
"insert into member(id, pw)values('"+ id +"','"+ pw +"')";
conn.Open();
command.ExecuteNonQuery();
conn.Close();
upDG();
}
課堂練習 sample6-b2
z程式功能
z延續 sample6-b1 加入一超連結至 WebForm2 z在 WebForm2 中設計發表新文章頁面
z基本概念
z利用 insert 語法新增文章至資料表中
z畫面只提供文章主題和發言人輸入功能
SQL 語法–DELETE
zDELETE 刪除命令用來刪除資料表中的 指定資料
z語法
zDELETE FROM 資料表名稱 WHERE 條件式
z用法
zDELETE FROM student WHERE id = 3 AND
name = 'Ives'
實例探討 sample6-a4 (1)
z程式功能
z購物清單
z勾選欲購買商品
z按下確定按鈕後列出總價
z程式內容
z利用樣板資料行來加入 CheckBox 控制
項於 DataGrid 中
實例探討 sample6-a4 (2)
z在 DataGrid 的
屬性產生器視
窗中,加入一
個樣板資料行
及二個繫結資
料行
實例探討 sample6-a4 (3)
z在 DataGrid 控
制項中點選右
鍵,可在『編輯
樣板』選項中選
取欲編輯的樣板
資料行
實例探討 sample6-a4 (4)
z將 CheckBox 控制 項加入
ItemTemplate 當中
實例探討 sample6-a4 (5)
z程式內容
private void Page_Load(object sender, System.EventArgs e)
{
string dataSource = Server.MapPath("item.mdb");
string connectionStr =
@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" +dataSource;
OleDbConnection conn = new OleDbConnection(connectionStr);
OleDbCommand command = new OleDbCommand("", conn);
實例探討 sample6-a4 (6)
z 程式內容
command.CommandText = "select * from item";
conn.Open();
OleDbDataReader dataReader = command.ExecuteReader();
itemDG.DataSource = dataReader;
itemDG.DataBind();
dataReader.Close();
conn.Close();
}
實例探討 sample6-a4 (7)
z 程式內容
private void purchaseBTN_Click(object sender, System.EventArgs e) {
int total = 0;
foreach(DataGridItem item in itemDG.Items) {
if(((CheckBox)item.Cells[0].FindControl("deleteCB")).Checked) {
total+= int.Parse(item.Cells[2].Text);
} }
totalLB.Text = total.ToString();
}
課堂練習 sample6-b3
z程式功能
z延續 sample6-b2
z製作討論區主題刪除功能
z基本概念
z利用 delete 語法刪除資料表中指定主題
z在 DataGrid 控制項中加入 CheckBox 欄位,
讓使用者點選欲刪除的主題
z設計一刪除按鈕,當使用者點選後刪除
DataGrid 控制項中已被勾選的文章主題
SQL 語法–UPDATE
zUPDATE 更新命令用來修改資料表中的 資料
z語法
zUPDATE 資料表名稱 SET 欄位1 = 資料1, 欄 位2 = 資料2, … WHERE 條件式
z用法
zUPDATE student SET name = 'Bob' WHERE
id = 2
實例探討 sample6-a5 (1)
z程式功能
z藝人簡介
z點選藝人名稱導至該藝人詳細資料頁面
z程式內容
z利用 DataGrid 中的樣板資料行加入 一
LinkButton 及 Image 控制項,用來連結藝人
詳細資料頁面及顯示藝人照片縮圖
實例探討 sample6-a5 (2)
z在 DataGrid
的屬性產生器
視窗中,加入
二個樣板資料
行及一個繫結
資料行
實例探討 sample6-a5 (3)
z在 DataGrid 控制項 中點選右鍵,可在
『編輯樣板』選項
中選取欲編輯的樣
板資料行
實例探討 sample6-a5 (4)
z在樣板編輯視窗 中,從工具箱拖曳 LinkButton 控制項至 ItemTemplate 項目中 z將該 LinkButton 控
制項 CommandName
屬性設定為 select
實例探討 sample6-a5 (5)
z點選 LinkButton 控制項的
(DataBindings) 屬 性,在自訂繫結 運算式視窗中,
加入繫結語法 DataBinder.Eval(
Container.DataItem,
“name")
實例探討 sample6-a5 (6)
z同樣繫結樣板資 料行中的 Image 控制項
DataBinder.Eval
(Container.DataI
tem,"image")
實例探討 sample6-a5 (7)
z 程式內容–WebForm1.aspx
private void Page_Load(object sender, System.EventArgs e) {
string dataSource = Server.MapPath("member.mdb");
string connectionStr = @"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" +dataSource;
OleDbConnection conn = new OleDbConnection(connectionStr);
string sqlStr = "select * from member " ;
OleDbCommand command = new OleDbCommand(sqlStr, conn);
實例探討 sample6-a5 (8)
z 程式內容–WebForm1.aspx
conn.Open();
OleDbDataReader dataReader =
command.ExecuteReader();
memberDG.DataSource = dataReader;
memberDG.DataBind();
dataReader.Close();
conn.Close();
}
實例探討 sample6-a5 (9)
z 程式內容–WebForm1.aspx
private void memberDG_SelectedIndexChanged(object sender, System.EventArgs e)
{
Response.Redirect("WebForm2.aspx?name="+
((LinkButton)memberDG.SelectedItem.FindControl("idLB")).Text );
}
實例探討 sample6-a5 (10)
z 程式內容–WebForm2.aspx
private void Page_Load(object sender, System.EventArgs e) {
string name = Request.QueryString["name"];
string dataSource = Server.MapPath("member.mdb");
string connectionStr =
@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" +dataSource;
OleDbConnection conn = new
OleDbConnection(connectionStr);
實例探討 sample6-a5 (11)
z 程式內容–WebForm2.aspx
string sqlStr = "select * from member " ; sqlStr+= "where name='" + name + "'";
OleDbCommand command =
new OleDbCommand(sqlStr, conn);conn.Open();
OleDbDataReader dataReader = command.ExecuteReader();
if(dataReader.Read()) {
nameLB.Text = dataReader["name"].ToString();
countryLB.Text = dataReader["country"].ToString();
pictureIMG.ImageUrl = dataReader["image"].ToString();
}
dataReader.Close();
conn.Close();
課堂練習 sample6-b4
z 程式功能
z 延續 sample6-b3 z 更新瀏覽人數資料
z 基本概念
z 利用 DataGrid 中的樣板資料行加入 一 LinkButton 控制項
z 點選該控制項時連接資料庫更新瀏覽人數欄位資料 z 利用 dataReader["欄位名稱"] 取得資料表中資料並
列印至網頁
DataList 控制項 (1)
zDataList 控制項可使用樣板與樣式定義的 格式來顯示資料
z常用屬性
zDataSource–設定資料來源
z常用方法
zDataBind–進行資料繫結動作
DataList 控制項 (2)
z在 DataList 控制項上點選右鍵,選擇欲
編輯的樣板區塊
DataList 控制項 (3)
z 項目樣板的編輯畫面中,
可以在 ItemTemplate 中 設定欲顯示的資料格式 z 可利用 HTML 控制項中
的 Table 控制項進行排版 動作
(最好將 Table 格式設定
好後,再拖曳至 DataList
的 ItemTemplate 項目中)
課堂練習 sample6-b5
z 程式功能
z 延續 sample6-b4
z 利用 DataList 控制項顯示文章內容
z 基本概念
z 利用 HTML 控制項中的 Table 控制項設定欲顯示畫面 z 在 Table 控制項中放置 Web 控制項中的 Label 控制
項,設定該 Label 控制項的資料繫結運算式,以顯示 資料表中資料
z 最後將 Table 控制項拖曳至 DataList 的 ItemTemplate 項目中
z 主程式需設定 DataList 的 DataSource 屬性及進行 DataBind 動作