在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

VFP與SQL遠程異構數據庫

VFP與SQL遠程異構數據庫

更新時間:2022-05-03 文章作者:未知 信息來源:網絡 閱讀次數:

文/陳純

  熟悉 VFP的朋友都知道,在 VFP 里我們可以使用遠程視圖 (Remote View) 和 SPT(SQL Pass Through) 技術控制遠程異構數據庫。這些技術其實是 VFP 對 ODBC 的 API 的封裝,所以對于用戶來說訪問遠程數據庫就像操作傳統的DBF一樣簡單。關于這兩種技術的使用,完全可以洋洋灑灑地寫下一本書,鑒于本文主題及篇幅,這里僅枚舉 SPT 技術訪問遠程數據的應用。

  
  很多人認為有了遠程視圖這樣直觀、簡單的工具,為什么還需要 SPT 呢?確實 SPT 較遠程視圖難以掌握,但細細體會你會發現:遠程視圖其實是對 SPT 的可視化工具!SPT 較遠程視圖更具威力,遠程視圖提供的功能只是 SPT 的一個子集。其優勢和劣勢主要體現在以下幾個方面:

  l、SPT 的優勢

  1) 一次得到多個Cursor;

  2) 執行除 Select 以外的其他 SQL 語句,如 Insert、Update、Delete等;

  3) 執行遠程數據庫的存儲過程 ;

  4) 執行遠程數據庫的特殊函數、命令等 ;

  5) 事務管理 。

  2、SPT 的劣勢

  1) 沒有圖形用戶界面;

  2) 必須人工維護連接;

  3) 得到的Cursor默認是“可讀寫”Cursor,要使它成為“可更新”Cursor必須經過設置才行。

  下面就順著我們對 SPT 的認識,來瀏覽一下這個偉大的工具吧!(注意:本文所有例程均使用 SQL Server的NorthWind 數據庫演示)。


  管理連接


  l、建立連接

  注意:本文所有示例的代碼若用到連接的,默認采用“建立連接”代碼中產生的連接句柄 “CON”。

  WAIT ' 連接到 SQL Server 上去 ' NOWAIT NOCLEAR WINDOW

  SQLSETPROP(0,"DispLogin" ,3) &&&& 設置環境為“從不顯示 ODBC 登錄對話框”。

  CON=SQLSTRINGCONNECT("driver=SQL Server;Server=BOE;Uid=sa;pwd=;database=northwind")

  *假定 SQL Server 服務器名為 BOE, 用戶 ID 是sa, 口令是空串

  *如果你的 SQL Server 的服務器名, 用戶 ID, 口令與上不同,請修改以上代碼中的相關部分以符合你系統中的設置

  WAIT clear

  IF con<=0

  MESSAGEBOX(' 連接失敗 ',64,' 連接到 SQL Server 上去 ')

  ELSE

  MESSAGEBOX(' 連接成功 ',64,' 連接到 SQL Server 上去 ')

  ENDIF

  2、斷開連接

  SQLDISCONNECT(CON)


  一次得到多個Cursor


  我們可以用一次 SPT 傳回多個Cursor,如下:

  cSQL="SELECT * FROM EMPLOYEES"+CHR(10)+"SELECT * FROM CUSTOMERS"+CHR(10)+"SELECT * FROM PRODUCTS"

  ?SQLEXEC(con,cSQL,"TEMP")

  SQLEXEC( ) 的返回值表示Cursor的數量,這里返回 3 。這三個Cursor分別以 TEMP、TEMP1和TEMP2 命名。


  執行其他 SQL 語句


  下面我們嘗試執行SQL Server以外的SQL語句:

  cSQL="IF EXISTS(SELECT * FROM CUSTOMERSswheres CUSTOMERID='TEST')"

  cSQL=cSQL+" DELETE FROM CUSTOMERSswheres CUSTOMERID='TEST'" cSQL=cSQL+" ELSE INSERT CUSTOMERS(CUSTOMERID,COMPANYNAME) VALUES('TEST',' 這是一個測試! ')"

  IF SQLEXEC(CON,cSQL)<=0

  MESSAGEBOX(' 執行失敗 ',64,' 發送語句到 SQL Server 上去 ')

  ELSE

  MESSAGEBOX(' 執行成功 ',64,' 發送語句到 SQL Server 上去 ')

  ENDIF

  行文至此,也許有朋友會問:如果 SQL 語句中 CUSTOMERID 是一個變量怎么辦呢?其實 我們可以通過兩個常用的解決方案來解決:

  1、拼接字符串

  CUSTID='TEST'

  cSQL="IF EXISTS(SELECT * FROM CUSTOMERSswheres CUSTOMERID='"+CUSTID+"')"

  cSQL=cSQL+" DELETE FROM CUSTOMERS swheresCUSTOMERID='"+CUSTID+"'"

  cSQL=cSQL+" ELSE INSERT CUSTOMERS(CUSTOMERID,COMPANYNAME) VALUES('"+CUSTID+"',' 這是一個測試! ')"

  ?SQLEXEC(CON,cSQL)

  2、SPT 標準變量傳遞法

  CUSTID='TEST'

  cSQL="IF EXISTS(SELECT * FROM CUSTOMERSswheresCUSTOMERID=?CUSTID)"

  cSQL=cSQL+" DELETE FROM CUSTOMERSswheresCUSTOMERID=?CUSTID"

  cSQL=cSQL+" ELSE INSERT CUSTOMERS(CUSTOMERID,COMPANYNAME) VALUES(?CUSTID,' 這是一個測試! ')"

  ?SQLEXEC(CON,cSQL)


  特殊函數和命令


  如果在 SQL Server 中你有足夠的權限,通過 SPT 使用遠程數據庫的特殊函數和命令,你可以完全控制 SQL Server ,這里我們就演示“怎樣取得數據庫服務器的時間”:

  ?SQLEXEC(con,"select getdate() as serverdatetime","temp1")

  ?temp1.serverdatetime

  USE IN ("temp1")


  事務管理


  在一些復雜的應用中,往往會有一項操作影響幾個表的情況。就客戶端來說,發送到遠程數據庫的數據變動可能來源很多:表緩沖的多行記錄的變動,行緩沖的單行記錄變化,以及前文我們演示的直接用 SQL 語句傳遞的數據維護,林林總總……怎樣把這些更新行為控制在一個事務中呢!要么一起成功,要么一起回滾。

  cSQL="DELETE FROM CUSTOMERSswheresCUSTOMERID='BLAUS'"+CHR(10)

  cSQL=cSQL+"INSERT CUSTOMERS(CUSTOMERID,COMPANYNAME) VALUES('TEST1',' 這是一個測試! ')"

  SQLSETPROP(CON,"Transactions" ,2)&&&& 開始一個事務

  IRETURN=SQLEXEC(CON,cSQL)

  IF IRETURN=1

  SQLCOMMIT(CON)&&&& 事務交付

  ELSE

  SQLROLLBACK(CON)&&&& 事務回滾

  ENDIF

  SQLSETPROP(CON,"Transactions" ,1)&&&& 重新回到自動事務處理狀態

  &&&&就本例而言,“DELETE FROM CUSTOMERSswheres CUSTOMERID='BLAUS'”總是不能執行的,SQL Server會返回出錯揭示:

  &&&&DELETE statement conflicted with COLUMN REFERENCE constraint 'FK_Orders_Customers'.

  &&&&The conflict occurred in database 'Northwind', table 'Orders', column 'CustomerID'.

  &&&&所以這筆事務總是被回滾的!!

  從例程中可以看到,我們開啟的事務其實是針對“連接”的,也就是說通過該“連接”的所有數據更新都包含于事務中,直到事務被回滾或交付。

  SQLSETPROP(CON,"Transactions" ,2 ), 其實是開啟了人工事務處理,也就是說必須由用戶明確地給出交付或者回滾指令,事務才會結束。所以筆者以為:完成一筆事務以后,應執行 SQLSETPROP(CON,"Transactions" ,1 ) 將“連接”的事務模式設為默認的“自動”,這樣可以防止用戶陷入未知的事務中去。

  SPT的基本操作還不止這些,以后我們還會為讀者朋友介紹其他一些基本操作。如果朋友們能掌握這些基本操作,就能編寫不錯的 C/S 程序了。雖然本文是用 SQL Server 作為遠程數據庫,但是如果你使用 DB2和Oracle等,在 VFP 中也可以進行同樣的處理。

  本文開始已提到 VFP 在這方面的內容很廣泛,寥寥千言當然不能盡言,有興趣的朋友可以去訪問www.boeworks.com,以便查閱更多的內容。OK,希望有機會與大家一起討論這方面的問題。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 夜夜添无码一区二区三区| 黄色片视频在线免费观看| 成年人在线看片| 日本十八禁视频无遮挡| 国产高清免费在线| 手机免费看av网站| 日本爱爱免费视频| 北条麻妃69av| 久久成人免费观看| 成人区一区二区| 国产爆乳无码一区二区麻豆| 久久国产这里只有精品| 久久黄色免费看| 亚洲人成无码www久久久| 日韩a∨精品日韩在线观看| 亚洲色成人www永久在线观看| 日本xxx免费| 日本三日本三级少妇三级66| 91国内在线播放| 亚洲综合伊人久久| 99九九精品视频| 91视频福利网| 一本—道久久a久久精品蜜桃| 亚洲综合伊人久久| www.-级毛片线天内射视视| 一区二区三区国产好的精华液| 一女二男3p波多野结衣| 日本一二区免费| 日韩av影视大全| 欧美三级午夜理伦三级老人| 成人午夜视频免费观看| 99在线免费视频观看| 九色自拍视频在线观看| 91av资源网| 天天操天天爱天天爽| 北条麻妃av高潮尖叫在线观看| 国产精品乱码久久久久| 国产色视频在线播放| 91香蕉视频免费看| 精品国产一区二区三区无码| av无码久久久久久不卡网站| av天堂永久资源网| 777一区二区| 亚洲欧美一区二区三区不卡| 欧美中日韩在线| 咪咪色在线视频| 成年在线观看视频| 美女黄色片视频| 青青草原国产在线视频| 精品免费国产一区二区| 国产精品自在自线| 激情图片qvod| 欧美三级午夜理伦三级| 国产日韩av网站| 99久久99精品| www.在线观看av| 超碰91在线播放| 久久免费一级片| 成人av一级片| 亚洲综合123| 精品欧美一区免费观看α√| 亚洲最大综合网| 精品少妇在线视频| 欧美第一页浮力影院| 久久艹国产精品| 999热精品视频| 99热成人精品热久久66| 亚洲区成人777777精品| 亚洲男人天堂色| 婷婷五月综合缴情在线视频| 国产又大又黄又猛| 高清在线观看免费| 精品久久久无码人妻字幂| 国产精品久久久毛片| 国产美女在线一区| 亚洲美女自拍偷拍| 亚洲色图 在线视频| 久久亚洲中文字幕无码| 日韩最新中文字幕| 91av视频免费观看| 男的插女的下面视频| 国产免费视频传媒| 欧美日韩亚洲第一| 国产成人无码精品久久久性色| 国产美女18xxxx免费视频| 亚洲综合色在线观看| 国产精品久久国产| 九九九九九国产| 午夜精品久久久久久久无码| 日韩欧美国产片| 9999在线观看| 亚洲视频第二页| 国产激情在线观看视频| 在线观看中文av| 日本不卡一区二区在线观看| 粉色视频免费看| 欧美在线aaa| 日韩精品免费一区| 久草视频这里只有精品| 日日噜噜噜噜久久久精品毛片| 97成人在线观看视频| 日韩一级片免费视频| 欧美精品一区免费| 51自拍视频在线观看| 天天影视综合色| 一本色道久久88亚洲精品综合| 丁香啪啪综合成人亚洲| 97久久国产亚洲精品超碰热| 日本福利视频在线| 杨幂毛片午夜性生毛片 | 美女网站色免费| а 天堂 在线| 国产免费一区二区三区视频| 一本色道久久亚洲综合精品蜜桃 | 手机在线免费毛片| 成人性免费视频| 色噜噜狠狠一区二区三区狼国成人| 免费看啪啪网站| 欧美男女交配视频| 国产精品夜夜夜爽张柏芝| 热久久最新网址| www国产精品内射老熟女| 国产欧美123| 中文字幕黄色大片| 欧美韩国日本在线| 五月天激情播播| 久久久久人妻精品一区三寸| 国产精品久久久久久久av福利| 人妻熟妇乱又伦精品视频| 国产免费一区二区视频| 亚洲一区 在线播放| av无码久久久久久不卡网站| 黄色片视频在线免费观看| 人人爽人人av| 人妻少妇被粗大爽9797pw| www.日日操| 好吊色视频988gao在线观看| 九色porny91| 可以在线看的黄色网址| 中文字幕22页| 国产日韩欧美精品在线观看| 国产亚洲天堂网| 天天做天天干天天操| 欧美视频在线观看视频| 五月婷婷之综合激情| 成年在线观看视频| 久久99999| 夜夜添无码一区二区三区| 国产视频1区2区3区| 成年人看的毛片| 久久9精品区-无套内射无码| 欧美特级aaa| 欧美牲交a欧美牲交aⅴ免费下载| 成年人免费观看的视频| 男人天堂成人网| 日韩av一二三四区| 污视频网址在线观看| av中文字幕av| 奇米影视四色在线| 日韩在线视频在线| 国产视频一区二区视频| 亚洲精品天堂成人片av在线播放| 国产毛片视频网站| 国产91porn| 中文字幕在线视频一区二区| 韩国一区二区av| 天天夜碰日日摸日日澡性色av| 中文字幕22页| 玩弄japan白嫩少妇hd| 欧美 亚洲 视频| 国产1区2区3区中文字幕| 天天综合网久久| 男女啪啪网站视频| 国产在线青青草| 午夜精品久久久内射近拍高清| 黄色影院一级片| 久久手机在线视频| 日本高清免费在线视频| 天天碰免费视频| 国产精品免费观看久久| 午夜视频在线瓜伦| 亚洲五码在线观看视频| 欧美 日韩 激情| 一本一道久久a久久综合蜜桃| 99国产精品白浆在线观看免费| 91女神在线观看| 国产精品久久成人免费观看| 欧美黄色免费影院| 女人高潮一级片| 男人的天堂狠狠干| 校园春色 亚洲色图| 亚洲最大综合网| 中文字幕视频在线免费观看| 麻豆av免费在线| 日本va中文字幕| 蜜臀视频一区二区三区| 男人添女人下面免费视频| 丁香婷婷激情网| 国产精品嫩草影院8vv8| 久久精品亚洲天堂|