將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
關鍵字:Access SQL Server 其它數據庫 數據庫頭條
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解