氣有浩然薪寓,學無止境挑庶!數(shù)據(jù)庫操作,無非增刪改查包蓝!
1咱扣、SetTransObject( )
- 作用
在使用數(shù)據(jù)窗口控件檢索數(shù)據(jù)前友浸,必須通知數(shù)據(jù)窗口使用哪個事務對象來操作數(shù)據(jù)庫(實際上也就是告訴數(shù)據(jù)窗口從哪個數(shù)據(jù)庫中檢索數(shù)據(jù))。一般來說偏窝,我們在數(shù)據(jù)窗口控件所在窗口的Open事件中執(zhí)行SetTransObject()函數(shù)
- 示例
數(shù)據(jù)窗口控件dw_1與連接數(shù)據(jù)庫的事務對象SQLCA聯(lián)系在一起收恢。dw_1.SetTransObject (SQLCA)
2、Retrieve
- 作用
調用數(shù)據(jù)窗口控件的對象函數(shù)Retrieve()把數(shù)據(jù)裝入數(shù)據(jù)窗口
- 示例
返回長整型ll_rows祭往,代表檢索出來的數(shù)據(jù)行數(shù)伦意,返回值<1時返回錯誤提示
long ll_rows
dw_main.SetTransObject(SQLCA)
ll_rows = dw_main.Retrieve()
IF ll_rows < 1 THEN
MessageBox("Database Error","No rows retrieved.")
end if
3、InsertRow( )
- 作用
在數(shù)據(jù)窗口的主緩沖區(qū)中插入一個空行
- 示例
返回長整型的行號
long ll_newrow
ll_newrow = dw_employee.InsertRow(0)
dw_employee.ScrollToRow(ll_newrow) //當在數(shù)據(jù)窗口主緩沖區(qū)的末尾插入一行時硼补,新行并不一定能在數(shù)據(jù)窗
//中看到驮肉,這時可以使用函數(shù)ScrollToRow( )。
4已骇、deleterow()
- 作用
在數(shù)據(jù)窗口的主緩沖區(qū)(即顯示在用戶面前的數(shù)據(jù)中)中刪除一行
- 示例
通過getrow獲取當前鼠標所在行號离钝,然后deleterow刪除票编,最后update更新數(shù)據(jù)庫
int s
s = dw_1.getrow( ) //該函數(shù)返回一個long型值,表示當前行號卵渴。如果沒有選中任一行慧域,則返回0,出錯時返回-1浪读。
dw_1.deleterow( s)
dw_1.update( ) //更新數(shù)據(jù)庫
5昔榴、SetSQLSelect()
- 作用
詳述sql select的查詢狀態(tài)
- 示例一
string OldSyn, NewSyn
OldSyn = 'SELECT employee.EMP_Name FROM employee WHERE salary < 70000'
NewSyn = 'SELECT employee.EMP_Name FROM employee WHERE salary < 100000'
IF dw_emp.Retrieve( ) = 0 THEN
dw_emp.SetSQLSelect(NewSyn)
dw_emp.Retrieve()
END IF
- 示例二
按照客戶編號查詢數(shù)據(jù),sle_1.text為SigleEdit的窗口輸入內容碘橘。
string wheresql,newsql
long lrc
if sle_1.text<>"" then
wheresql="where 客戶編號='"+sle_1.text+"'"
newsql=oldsql+wheresql
dw_1.setsqlselect(newsql)
lrc=dw_1.retrieve( )
//如果lrc<1說明沒有檢索到數(shù)據(jù)互订,給出一個提示框
if lrc<1 then
messagebox("提示","沒有檢索到,請檢查客戶編號")
end if
else
messagebox("提示","請輸入客戶代號")
end if
6痘拆、setfilter
每次setfilter仰禽、filter之后,只用setfilter("")即可纺蛆,不用再filter吐葵,下次你retrieve時,由于setfilter("")了犹撒,所以是全數(shù)數(shù)據(jù)。示例如下:
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_1.setfilter("")
if rb_1.checked then
dw_1.setfilter("(圖書編號 like '%"+sle_1.text+"%')")
elseif rb_2.checked then
dw_1.setfilter("(書名 like '%"+sle_1.text+"%')")
elseif rb_3.checked then
dw_1.setfilter("(作者 like '%"+sle_1.text+"%')")
elseif rb_4.checked then
dw_1.setfilter("(出版社 like '%"+sle_1.text+"%')")
end if
dw_1.filter( )
數(shù)據(jù)窗口四大數(shù)據(jù)緩沖區(qū):
1粒褒、Primary Buffer
這個緩沖區(qū)是存放填充窗口中DataWindow控件中數(shù)據(jù)的,調用DataWindow的Retrieve()函數(shù)和InsertRow()函數(shù)可以將數(shù)據(jù)填入這個緩沖區(qū)中识颊。當使用有關DataWindow刪除和過濾函數(shù)時,相應記錄將從這一緩沖區(qū)中刪除。而在執(zhí)行DataWindow的Update()函數(shù)時,PowerBuilder將查看這一緩沖區(qū)中的記錄,以形成SQL INSERT和UPDATE語句奕坟。
2祥款、Delete Buffer
這個緩沖區(qū)保存的是用DeleteRow()函數(shù)從Primary Buffer中刪除的記錄,執(zhí)行Update()函數(shù)時,系統(tǒng)根據(jù)這一緩沖區(qū)的記錄形成DELETE語句。
3月杉、Filter Buffer
這個緩沖區(qū)存儲的是從Original Buffer使用Filter()函數(shù)過濾到Primary Buffer中后剩余的記錄刃跛。
4、Original Buffer
這一緩沖區(qū)存儲的是DataWindow最初執(zhí)行retrieve()函數(shù)時得到的全部記錄苛萎。當提交數(shù)據(jù)庫時,根據(jù)Primary Buffer生成的UPDATE語句和根據(jù)Delete Buffer生成的DELETE語句都要依據(jù)這一緩沖區(qū)來構造這些SQL語句中的Where子句桨昙。