国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

如何利用VB類提高代碼質量

2024-07-21 02:20:33
字體:
來源:轉載
供稿:網友


 

可能平時我們在用vb寫程序的過程中,會忽視一些面向對象的思想。希望通過一個例子能夠對大家起到拋磚引玉的作用,我們舉一個vb訪問數據庫的例子。這是本人第一次寫技術方面的文章,請大家支持??!qq:16644686

1。經常出現的寫法

在vb中實現對數據庫的訪問,我們可能會通過一個全局函數來實現,例如以下的代碼:

public function dbsqlopen(strname as string, strpwd as string, _
                            strip as string, strdatabase as string) as adodb.connection
    'purpose:   連接sql數據庫
    'accepts:
    '           strname-------登陸服務器用戶名
    '           strpwd--------登陸服務器密碼
    '           strip---------服務器地址
    '           strdatabase---數據庫名
    'return:    連接對象
    dim madocon as adodb.connection       '///////////////////////////////
    set madocon = new adodb.connection
    madocon.connectionstring = "provider=sqloledb.1;persist security info=false;user id=" _
    & strname & ";pwd=" & strpwd & ";initial catalog=" & strdatabase & ";data source=" & strip & ""
    madocon.open
    set dbsqlopen = madocon
end function

然后在其它地方要用到ado連接的時候就通過該函數來返回。比如:
private sub form_load()
    set rs = new adodb.recordset
    rs.cursortype = adopenkeyset
    rs.locktype = adlockpessimistic
    rs.activeconnection = dbsqlopen(strlocalname, strlocalpwd, "(local)", strlocaldb)
    ........
end sub

程序中如果采用這種方式來實現連接數據庫,效率非常的低下。你每用到一次dbsqlopen這個全局函數,全局函數里面聲明的adodb.connection就會open一次,假如你的程序頻繁調用這個全局函數,可想而之程序的效率將會多么的低下。如何避免這種設計方式呢?我們采用下面的方式。

2.改進的寫法

假如我們設計一個類來實現數據庫訪問就會避免這樣的問題。具體代碼如下:

private m_adoconn as new adodb.connection
private m_adorecordset as new adodb.recordset

public function dbinit()
    set m_adoconn = nothing
    set m_adorecordset = nothing
end function

public function dbend()
    m_adorecordset.close
    m_adoconn.close
    set m_adorecordset = nothing
    set m_conn = nothing
end function

public function dbsqlopen(strname as string, strpwd as string, _
                            strip as string, strdatabase as string)
    m_adoconn.connectionstring = "provider=sqloledb.1;persist security info=false;user id=" _
    & strname & ";pwd=" & strpwd & ";initial catalog=" & strdatabase & ";data source=" & strip & ""
    m_adoconn.connectiontimeout = 5
    m_adoconn.open
end function

public function dbgetconn() as adodb.connection
    dbgetconn = m_adoconn
end function

我們在模塊里面可以聲明一個public m_dbclass as dbclass來實現對數據庫的訪問。

private sub command1_click()
    dim rs1 as adodb.recordset
    rs1.activeconnection = m_dbclass.dbgetconn
end sub

private sub form_load()
    dim strname as string
    dim strpwd as string
    dim strip as string
    dim strdatabase as string
   
    strname = "sa"
    strpwd = ""
    strip = "192.168.0.37"
    strdatabase = ""
   
    m_dbclass.dbinit
    m_dbclass.dbsqlopen strname, strpwd, strip, strdatabase
end sub

private sub form_unload(cancel as integer)
    m_dbclass.dbend
end sub

每一次要用到數據庫連接的時候我們就通過類里面的dbgetconn方法來返回一個adodb.connection。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇康县| 海城市| 堆龙德庆县| 成安县| 磐安县| 高陵县| 同江市| 泗阳县| 沅陵县| 康保县| 堆龙德庆县| 图片| 定西市| 常宁市| 濮阳县| 勃利县| 黎平县| 咸宁市| 镇江市| 桃江县| 靖西县| 新乡市| 抚州市| 友谊县| 广灵县| 五峰| 怀安县| 和硕县| 江阴市| 安义县| 花莲县| 秦安县| 营山县| 公安县| 抚松县| 汉沽区| 临西县| 行唐县| 当雄县| 常州市| 高清|