2012-10-05 120 views
2

我正在構建一個系統,其中包括JavaFX客戶端通過glassfish應用服務器上的servlet從MS SQL服務器提取數據。我還從Visual FoxPro數據庫中消耗一些來自遺留系統的數據,這些遺留系統無法修改。我正在使用JDataConnect庫在glassfish服務器上創建一個JDBC連接,我可以根據這個連接進行常規SQL查詢以獲取我需要的數據。從Glassfish服務器上的FoxPro數據更新sql數據庫

我的javafx客戶端包含許多tableviews,這些tableviews綁定到從數據庫檢索的數據的ObservableLists。有一張表是由MS SQL數據和FoxPro數據組成的數據。 FoxPro數據從不同的系統更新。由於客戶可以通過多種方式切片並將切片呈現給用戶,所以嘗試保持這些複合數據同步(並非不可能,但很困難)是令人望而卻步的。如果更改FoxPro數據庫中的必要值,MS SQL數據庫中的相關表中的列將更容易(並且更好地用於客戶端的設計)。而且由於許多客戶端將訪問數據,客戶端嘗試更新數據庫並不明智。

那麼,我可以編寫一個應用程序,該應用程序將運行在監視foxpro數據庫並將必要的更改/數據寫入SQL Server數據庫的glassfish服務器上?我只是不知道從哪裏開始開發這種類型的解決方案,如果的確如此,這是專家們的建議。我甚至不知道要搜索什麼。完全失去了它最好的結果。

感謝您的任何幫助或想法。

回答

0

那麼,我可以編寫一個應用程序,它將運行在監視FoxPro數據庫並將必要的更改/數據寫入SQL Server數據庫的glassfish服務器上嗎?

如果FoxPro數據庫可以將更改推送到您的應用程序,理想情況是。如果FoxPro生成數據庫更改的日誌,並且您的應用程序可以讀取此日誌,則可以執行此操作。我不夠FoxPro專家來說這種方法是否可行。

另一個過程是讓您的應用程序定期讀取FoxPro數據庫。說,每15分鐘。然後,由您的應用程序決定什麼是不同的並更新SQL Server數據庫。 SQL Server數據庫將始終位於FoxPro數據庫後面的輪詢間隔內。您將不得不確定多久閱讀一次FoxPro數據庫才能滿足您的應用程序需求。

+0

我已經考慮了你的第二個建議,但我不確定這是否是我可以在glassfish服務器上編寫和運行的應用程序。在這方面我是一個完全新手。正如我所說的,我不想讓所有客戶端在看到foxpro表具有更新的數據時嘗試對sql數據庫進行相同的更新。 – kpenrose

+0

@kpenrose:將提取過程編寫爲FoxPro應用程序會更有意義。一種方法是讓FoxPro應用程序讀取表並將行寫入平面文件,以便Java應用程序可以讀取和處理。 –

+0

@kpenrose:另一種選擇是將FoxPro數據庫升級到Sybase數據庫。 http://www.sybase.com/visualfoxpro?cmpid=cpc_us_gg_advdb_ads-foxpro&mc=google&mkwid=speNTZD2p_pcrid_12642278482_pmt_p_pkw_foxpro –

1

您可能無法修改舊的FoxPro系統,但如果表存儲在VFP數據庫容器(即DBC文件)中,則可以編寫存儲過程觸發器(插入,更新和/或刪除)在VFP數據庫容器中,並讓它們直接寫入SQL服務器數據庫。 您將需要:

  1. 訪問VFP數據庫容器
  2. 連接字符串到SQL Server數據庫
  3. 要寫入VFP存儲過程的觸發器對於要被推到SQL Server表的VFP數據。

一旦將連接整理出來,就可以使用SQLEXEC()命令編寫VFP存儲過程,該命令向VFP幫助中的「處理語句的數據源發送SQL語句」。例如。

m.lnFileHandle = SQLSTRINGCONNECT(m.lcConnectString) 
m.lcSQLCommand = "insert into elctablebk.dbo.t_bkcust (custidnum) values ('EdTest')" 
m.lnRetVal = SQLEXEC(m.lnFileHandle, m.lcSQLCommand) 

上面代碼獲取文件句柄#從連接到服務器,一個變量與一個SQL INSERT命令創建和SQL語句是使用SQLEXEC()命令在服務器上執行。如果成功,則在服務器上的示例t_bkcust文件中插入一條記錄。

+0

我對VFP方面瞭解不多;是否有任何需要安裝或配置爲允許推送到SQL Server而不是連接字符串? – kpenrose

+0

我使用ODBC從vfp執行大部分與sql server的連接。當您在VFP中修改數據庫時,可從菜單中選擇「連接」部分。你可以從那裏設置你的連接到你的SQL服務器數據庫。另外,VFP9中一個名爲TaskPane(Data Explorer選項卡)的方便的小工具允許您瀏覽服務器,使用OLEDB添加/修改連接。 –

+0

我在原文中增加了一些細節。 HTH! –

相關問題