VB如何存取資料庫 ? 資料庫 資料儲存 資料庫引擎 資料庫引擎 Jet 讀取、寫入與修改 資料控制項 資料庫存取物件(ADO) 使用者介面
何謂資料庫引擎 ? 一組包含在動態連結程式庫(DLL)中可以處理儲存、 擷取與 更新資料的函式 VB可以透過介面程式去呼叫並使用它們 JET DLL 查詢處理器 結果處理器
VB存取與資料庫位置 同一台電腦內:簡單但安全性不佳 c:\database\aa.mdb 遠端系統架構:可以結合Server端權限進行控管 或 SQL Server: Server位置 帳號 密碼 資料庫 資料表
顯示資料的控制項 稱為資料連結控制項(Bound Controls)或 資料感知元件(Data-Aaware Control) 屬性內需有Datasource與Datafield兩項 如Text控制項 包含有Label, Checkbox, Textbox, Picturebox, Image, OLE, Listbox, Comobox等 DBList, DBCombo, DBGrid, MSFlexGrid (可一次顯示或操作多筆)
新一版資料控制項ADODC ADO Data Control(ADODC) VB 6.0 以後提供 外掛式控制元件,使用前要引用
ADODC屬性設定
ADODC屬性設定
ADODC屬性設定 Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False; Data Source=C:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB
ConnectionString屬性 參數 參數值 意義 Provider Microsoft.Jet.OLEDB.4.0 OLD DB 驅動程式 Persist Security Info False 是否儲存密碼 Data Source C:\Program Files\Microsoft Visual Studio\VB98\BIBLIO.MDB 資料來源
ADODC屬性設定 檢視CommandType與RecordSource屬性
Datagrid 允許 顯示資料 新增資料 修改資料 刪除資料 練習使用ADODC與DATAGRID連結顯示資料
再探ADODC 使用ADODC透過ODBC來源名稱來載入資料庫
ODBC 開放式資料庫連結(Open DataBase Connectivity, ODBC) MS為解決不同後端資料庫連結所發展的一種整合技術 可以把ODBC視為一種Driver 使用者JET ODBC 後端JET 任何資料庫所用的ODBC需由該廠商提供(和Driver相同) VB SQL ODBC Oracle ODBC Sybase ODBC 在用戶端設定 SQL Oracle Sybase
再探ADODC 使用ADODC透過ODBC來源名稱來載入資料庫
再探ADODC 使用ADODC透過ODBC來源名稱來載入資料庫
再探ADODC 使用ADODC透過ODBC來源名稱來載入資料庫
再探ADODC 使用ADODC透過ODBC來源名稱來載入資料庫
再探ADODC 使用ADODC透過ODBC來源名稱來載入資料庫
再探ADODC 使用ADODC透過ODBC來源名稱來載入資料庫
Practice
透過控制台設定ODBC
透過控制台設定ODBC
透過控制台設定ODBC 使用者資料來源名稱
透過控制台設定ODBC
透過控制台設定ODBC
透過控制台設定ODBC
VB使用ODBC
Practice
Adodc透過程式控制資料庫 Connection物件:用以連接資料庫 Recordset物件:取得資料來源 Command物件:儲存操作資料庫時用到的命令 Parameter物件:管理查詢或預儲程式 Field物件:儲存欄位資料 Error物件:處理錯誤訊息 需透過上述的子物件達成
ADODC物件間相對關係 ADODC Recordset Fields Field ADODC1.Recordset 存取Recordset物件 ADODC1.Recordset.Fields 存取Fields物件 ADODC1.Recordset.Fields (i) 存取第i個Field物件 ADODC1.Recordset.Fields (i).value 存取第i個Field物件的值
Recordset物件 Recordset是資料錄的集合 資料錄是欄位的集合 所以利用Recordset便可以存取每一筆資料的每個欄位
ADODC資料控制項程式的撰寫 Adodc1.RECORDSET.方法 方法: Movefirst, Movenext, Moveprevious, Movelast Addnew, Edit, Update, Recordcount ….. Adodc1.RECORDSET(目前資料列欄位編號) 顯示資料 練習使用Adodc資料庫控制項與資料連結控制項來操作資料
資料的移動 目前紀錄在資料庫中的移動範圍:BOF~EOF 資料庫最上方 BOF 第一筆 第二筆 目前資料錄 .. 最後一筆 資料庫最下方
克服超過BOF或EOF的錯誤 如果超過BOF則將目前紀錄指向最後一筆 如果超過EOF則將目前紀錄指向第一筆 如何指向?
克服超過BOF或EOF的錯誤 移動紀錄了使用Move方法外,還可以使用: MoveFirst:移動指向到第一筆紀錄 MovePrevious:移動指向到前一筆紀錄 MoveNext:移動指向到下一筆紀錄 MoveLast:移動指向到最後一筆紀錄 所以當BOF發生時就使用MoveLast 當EOF發生時就使用MoveFirst
Practice 存取目前資料錄 克服沒有資料錄的問題(移動過頭了)
ADODC.Recordset存取欄位值的方法 ADODC1.Recordset.Fields (i).value 存取第i個Field物件的值 敘述 說明 Recordset.fields(“欄位名稱”) 省略.value Recordset(“欄位名稱”) 省略.fields Recordset![欄位名稱] Recordset(“欄位名稱”)再變形 注意沒有雙引號 不可用變數取代 多用此形式
ADODC.Recordset資料的增刪修改 刪除:Recordset.Delete Adodc1.Recordset.Delete 注意刪除後因為目前資料錄便不存在,所以要再呼叫Movexxx之類的方法,重新取得目前資料錄
ADODC.Recordset資料的增刪修改 修改: Adodc1.Recordset(“欄位名稱”)=新值 Adodc1.recordset.update
ADODC.Recordset資料的增刪修改 新增: Adodc1.Recordset.Addnew Adodc1.Recordset(“欄位名稱”)=新值 Adodc1.recordset.update
ADODC.Recordset資料的查詢 搜尋: Adodc1.Recordset.Find 條件,skiprows,搜尋方向,起始位置 條件:如學號=1001 條件=欄位名稱 比較符號 比較資料 skiprows :跳過幾筆資料再開始,預設值=0 搜尋方向:adSearchForward向下或是adSearchBackward向上,預設為向下 起始位置:預設為目前資料錄
條件式補充 資料型態 條件式 數值 “學號=1001” 字串 “姓名=‘王小明’” 日期與時間 “入學日期=#2000/3/5#” 比較資料類型 資料型態 條件式 數值 “學號=1001” 字串 “姓名=‘王小明’” 日期與時間 “入學日期=#2000/3/5#” 可以用程式中的變數取代
條件式補充 比較符號 =, <>, >, <, >=, <=, LIKE(配合%, *, _等字元使用) SQL語法處會更詳細介紹
Adodc.Recordset資料的查詢 Adodc1.Recordset.Find "customerid='" & Text2.Text & "'", 0, adSearchBackward ‘ 判斷是否有找到 If Adodc1.Recordset.EOF Or Adodc1.Recordset.BOF Then MsgBox "not ok" Else MsgBox "ok" End If 不好用 一次只能找一筆,且只會找到第一筆