PB中通過ODBC直接連接數據庫,不用註冊數據源。

在一次用數據庫畫板連接Access的時候,沒有設置任何的參數,結果彈出了一個選擇數據源的框,我選擇了一個DSN文件,結果連接成功了。以前一直不知道怎麼用DSN文件來連接數據庫,在琢磨之後,發現了下面的方法。




//==============================================================================
// RW 06.11.23 測試直接連接ODBC數據源,
// 一般連接需要註冊數據源,無意中發現PB能直接用*.DSN文件來直接連接
//再嘗試用後,發現用下面的方法可以連接到想要的數據源
//新建一個*.dsn文件,把裏面的參數放到ConnectString參數中就可以直接連接了
//下面是例子
//==============================================================================

//事務對象
Transaction trs_conn

trs_conn = CREATE Transaction
//事務對象參數設置,注意其中的DBParm中的ConnectString來自*.dsn中
//ConnectString的連接參數爲:(F1出來的)
//ConnectString = 'DSN = data_source_name; {UID = user_ID;PWD = password; driver_specific_parameters}'
//用*.dsn中的內容來填充driver_specific_parameters參數,其他省去。
trs_conn.DBMS = "ODBC"
trs_conn.AutoCommit=FALSE
trs_conn.DBParm = "ConnectString= '" +&
    "DRIVER=Driver do Microsoft Access (*.mdb); " +&
    "UID=admin; " +&
    "UserCommitSync=Yes; " +&
    "Threads=3; " +&
    "SafeTransactions=0; " +&
    "PageTimeout=5; " +&
    "MaxScanRows=8; " +&
    "MaxBufferSize=2048; " +&
    "FIL=MS Access; " +&
    "DriverId=25; " +&
    "DBQ=//Showtime/city/fax1.mdb; '"
//    "DBQ=E:/testodbc.mdb; '"
//.......................
//其他的具體參數
//.......................

//連接數據庫
CONNECT USING trs_conn ;

IF trs_conn.SQLCode = 0 THEN
    //    MessageBox("","連接成功")
    //檢索數據試試
    DataStore ds_test
    String ls_syntax,ls_sql,ls_style,ls_err
   
//    ls_sql = "Select * from table11"
    ls_sql = "Select * from mdb"
    ls_style = "style(type=grid)"
    //創建DataWIndow(DataStore)的源代碼
    ls_syntax = trs_conn.SyntaxFromSQL(ls_sql,ls_style,ls_err)
    IF Len(ls_err) > 0 THEN
        MessageBox("Error","創建DataStore源代碼失敗:" + ls_err)
    ELSE
        //用DataStore來連接,並讀取數據
        ds_test = CREATE DataStore
        ds_test.Create(ls_syntax,ls_err)
        IF Len(ls_err) > 0 THEN
            MessageBox("Error","創建DataStore出錯:" + ls_err)
        ELSE
            ds_test.SetTransObject(trs_conn)
            ds_test.Retrieve()
            //...........
        END IF
        DESTROY ds_test
        //用DataWindow來連接,並讀取數據       
        dw_1.Create(ls_syntax,ls_err)
        IF Len(ls_err) > 0 THEN
            MessageBox("Error","創建DataWindow出錯:" + ls_err)
        ELSE
            dw_1.SetTransObject(trs_conn)
            dw_1.Retrieve()
            //.........           
        END IF       
        //
    END IF
ELSE
    MessageBox("",trs_conn.SQLErrText)
END IF
//關閉連接
DISCONNECT USING trs_conn ;
DESTROY trs_conn



經過測試,發現可以連接數據庫,也可以連接到其他機子上的數據庫。但是,再用Access的時候,遠程的Access數據庫需要共享出來,而且可以要可以修改的登錄權限。
只測試了Access,其他的沒有測試,不知道是否可行

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章