程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 將Access移植到SQL Server

將Access移植到SQL Server

編輯:更多數據庫知識

  到SQL Server的Access開發人員面臨著很多困難,然而最為棘手的問題是對動態SQL的處理。在Access中,將控件的行指定為一個字符串是相當普通的現象。例如,窗體上包含著很多的選擇器(SalesGroup,State/Province/Canton,Beginning Date以及Ending Date等等),Access開發人員一般都會檢查這些控件以查看哪些為Null,然後編寫SQL語句以刪除這些Null值。

  通過這種方法連接到SQL Server具有以下幾點的缺點:

  所有的處理都在客戶端完成,而不是在服務器中完成。

  解析這些控件和處理SQLq語句的代碼顯得拖沓冗長。

  這一方法容易導致SQL 混入攻擊(injection attacks)。

  渴望擴展到SQL Server的Access開發人員必須解決兩個方面的問題:

  1. 識別所有非基於名稱查詢的記錄和行的數據源。

  2. 使用名稱查詢替代所有的查詢。

  對於動態地處理查詢,可以以如下所示的代碼處理:

  SELECT *

  FROM SomeTables

  WHERE ColumnOfInterest = Forms("myForm").ControlOfInterest

  AND Column2OfInterest = Forms("myForm").Control2OfInterest

  為了簡單起見,我們假設Access窗體上只包含兩個控件。Access方法將在代碼中解析控件的值,然後通過使用非零值的方法處理每一動態SQL查詢。

  這是一種沒有向導的方式。你所需要的是一個存儲程序,這一存儲程序被參數化以接收來自窗體上控件的所有數據。例如,假設以上給定的兩個控件,存儲程序被自身的數據觸發,如果數值為Null,存儲程序就會“智能化地”執行。

  這裡是實現這一過程的一個簡單技巧:

  SELECT *

  FROM SomeTables

  WHERE ColumnOfInterest = 12345 OR ColumnOfInterest is NULL

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved