发布时间:2015-11-29 00:00 来源:未知
到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 *
WHERE ColumnOfInterest = Forms("myForm").ControlOfInterest
FROM SomeTables
WHERE ColumnOfInterest = 12345 OR ColumnOfInterest is NULL