国产探花免费观看_亚洲丰满少妇自慰呻吟_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。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邻水| 加查县| 花莲市| 武乡县| 文水县| 勃利县| 柞水县| 卓资县| 绥芬河市| 泰来县| 建水县| 靖江市| 华亭县| 南投县| 昌平区| 张北县| 石泉县| 沁阳市| 扶余县| 康马县| 土默特左旗| 湘乡市| 隆林| 南充市| 广灵县| 安多县| 云南省| 竹北市| 巴林右旗| 定南县| 定陶县| 成都市| 文昌市| 古丈县| 临沂市| 通道| 吉林省| 饶平县| 渝中区| 奎屯市| 莱州市|