.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
命名空間︰System.Data.SqlClient
可用資料庫︰MS-SQL
z OLE DB .NET Data Provider
命名空間︰System.Data.OleDb
可用資料庫︰ Dbase、FoxPro、Excel、Access、Oracle、
Access…
z ODBC .NET Data Provider
需至微軟網站另外下載
可用資料庫︰ MySQL…
Connection 物件
z ADO.NET 的 Connection 物件用來連接資料來 源,代表使用者與資料來源間的連線
z 利用『連線字串』來描述所要連線的資料來源 z 連接 Access 資料庫連線字串格式
z Provider–Microsoft.Jet.OLEDB.4.0 z Data source–資料庫檔案所在路徑
z OleDbConnection 類別
z 常用屬性
ConnectionString–取得或設定連線字串 (可於建構式設定)
z 常用方法
Open–開啟資料庫連線
Close–關閉連線
實例探討 sample9-a1 (1)
z 程式功能
z 建立與資料庫間的連線
z 程式內容
private void Form1_Load(object sender, System.EventArgs e) {
stateTB.Text = "尚未連線..";
string connectionStr =
@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=d:\sample.mdb";
OleDbConnection conn =
new OleDbConnection(connectionStr);
實例探討 sample9-a1 (2)
z 程式內容
stateTB.Text += "\r\n進行連線..";
try {
conn.Open();
stateTB.Text += "\r\n連線成功..";
conn.Close();
stateTB.Text += "\r\n關閉連線..";
} catch {
stateTB.Text += "\r\n連線失敗..";
} }
Command 物件
z Command 物件可以用來執行所要對資料庫操 作的命令
z 建構式中可傳入 SQL 命令及 Connection 物件 z 常用方法
z ExecuteReader
用來執行 Command 物件中的 SQL 查詢語法– SELECT
取得資料後會回傳一個 DataReader 物件供使用者瀏覽資料
z ExecuteNonQuery
用來執行 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 資料處理語言
包含 SELECT、INSERT、UPDATE 及 DELETE…
zDDL 資料定義語言
包含 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
實例探討 sample9-a2 (1)
z 程式功能
z 讀取資料表中資料並顯示於文字方塊中
z 程式內容
private void Form1_Load(object sender, System.EventArgs e) {
string connectionStr = @"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=d:\sample.mdb";
OleDbConnection conn = new OleDbConnection(connectionStr);
string sqlStr = "select * from student";
OleDbCommand command = new OleDbCommand(sqlStr, conn);
實例探討 sample9-a2 (2)
z 程式內容
studentTB.Text = "ID\tNAME\r\n==================\r\n";
try {
conn.Open();
OleDbDataReader dataReader = command.ExecuteReader();
while(dataReader.Read()) {
studentTB.Text += dataReader["id"].ToString() + "\t" + dataReader["name"].ToString() + "\r\n";
}
dataReader.Close();
}
實例探討 sample9-a2 (3)
z程式內容
catch {
}
finally {
conn.Close();
} }
課堂練習 sample9-b1
z 程式功能
z 建立一個 Exam 資料庫含有 Midterm 資料表 z Midterm 資料表包含學號、姓名、成績欄位 z 利用 Access 操作介面輸入幾筆資料
z 利用 ListView 控制項顯示 Midterm 資料表內容
z 基本概念
z 利用 System.Data.OleDb 命名空間中的
OleDbConnection 及 OleDbCommand 類別來連接資 料庫
SQL 語法–INSERT
zINSERT 新增命令用來新增一筆資料至指 定資料表中
z語法
zINSERT INTO 資料表名稱 ( 欄位名稱1, 欄位 名稱2, …) VALUES ('資料1', '資料2', …)
z用法
zINSERT INTO student(id, name) VALUES(3,
'Ives')
SQL 語法–DELETE
zDELETE 刪除命令用來刪除資料表中的 指定資料
z語法
zDELETE FROM 資料表名稱 WHERE 條件式
z用法
zDELETE FROM student WHERE id = 3 AND
name = 'Ives'
SQL 語法–UPDATE
zUPDATE 更新命令用來修改資料表中的 資料
z語法
zUPDATE 資料表名稱 SET 欄位1 = 資料1, 欄 位2 = 資料2, … WHERE 條件式
z用法
zUPDATE student SET name = 'Bob' WHERE
id = 2
實例探討 sample9-a3 (1)
z程式功能
z新增及刪除資料表中資料
z程式內容
private string connectionStr;
private OleDbConnection conn;
private OleDbCommand command;
實例探討 sample9-a3 (2)
z程式內容
private void Form1_Load(object sender, System.EventArgs e)
{
//設定連線資訊
connectionStr = @"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=d:\sample.mdb";
conn = new OleDbConnection(connectionStr);
command = new OleDbCommand("", conn);
updateLB();
}
實例探討 sample9-a3 (3)
z 程式內容
private void studentLB_SelectedIndexChanged(object sender, System.EventArgs e)
{
string[] strTmp = studentLB.SelectedItem.ToString().Split('\t');
idTB.Text = strTmp[0];
nameTB.Text = strTmp[1];
}
private void addBTN_Click(object sender, System.EventArgs e) {
if(idTB.Text != "" && nameTB.Text != "") {
addDB(idTB.Text, nameTB.Text);
updateLB();
}
實例探討 sample9-a3 (4)
z程式內容
private void delBTN_Click(object sender, System.EventArgs e)
{
if(idTB.Text != "" && nameTB.Text != "") {
delDB(idTB.Text, nameTB.Text);
updateLB();
} }
實例探討 sample9-a3 (5)
z 程式內容
private void updateLB() {
command.CommandText = "select * from student";
try {
conn.Open();
studentLB.Items.Clear();
OleDbDataReader dataReader = command.ExecuteReader();
while(dataReader.Read()) {
studentLB.Items.Add(dataReader["id"].ToString() + "\t" + dataReader["name"].ToString());
}
實例探討 sample9-a3 (6)
z程式內容
dataReader.Close();
}
catch {
}
finally {
conn.Close();
} }
實例探討 sample9-a3 (7)
z 程式內容
private void addDB(string id, string name) {
command.CommandText = "insert into student(id, name)values("+
id +",'"+ name +"')";
try {
conn.Open();
command.ExecuteNonQuery();
}
catch{}
finally {
conn.Close();
}
實例探討 sample9-a3 (8)
z 程式內容
private void delDB(string id, string name) {
command.CommandText = "delete from student where id = "+ id +
" and name = '" + name +"'";
try {
conn.Open();
command.ExecuteNonQuery();
}
catch{}
finally {
conn.Close();
} }