学习无忧
开发频道 首页 | 入门 | 硬件 | 软件 | 设计 | 开发 | 网络 | 营销 | 社区 | 加油站
首页=>开发=>SQL Server=>扩大数据库容量:从Access到SQL  
扩大数据库容量:从Access到SQL
www.51study.net  2004-11-10 23:37
【字体:  】【评论打印】 【关闭
  在Access数据库中,通常把控件中的一行定义为一个字符串。例如,在一个窗体中带有一系列的选择项(这些选择项包括SalesGroup、State/Province/Canton、起始日期、截止日期等等)。Access开发人员将抽样检查这些控件,以查看其中哪些控件为空值,并且建立忽略这些值的SQL语句。
  
  以这一方式连接到SQL 服务器并不合理,主要有以下的原因:
  
  所有的处理程序都在客户端完成,而不是在服务器中完成。
  
  解析这些控件和处理SQL语句的代码将会变得相当繁杂。
  
  这一方法与SQL查询攻击有关。
  
  扩大SQL服务器容量的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数据库而言,你可以调用存储程序,无论相关控件的值是否为零,都将数据分配给所有的相关控件。
  
  EXEC mySproc Value1, Value2,. . . ValueN
  
  然后,存储程序将按照以上方法处理这些值为零的控件。可以假定存储程序在选择客户。传递一个值(12345),它就返回到一行。相反,传递一个null值,就会跳过OR从句。由于所有的参数为零,将返回到所有行。这里提供一个Northwind范例程序,程序中将告诉你如何运用这一技巧。
  
  CREATE PROCEDURE dbo.OrdersListSproc1
  (@OrderDateDateTime)
  AS SELECT dbo.Orders.*
  FROM dbo.Orders
  WHERE (OrderDate < CONVERT(DATETIME, '1996-08-01 00:00:00', 102))
  OR (@OrderDate IS NULL)
  
  当然,采用存储程序来取代动态SQL的方法并不一定总是可行的。在很多情况下,这种提高性能的方法还有待于进一步的改进。
【字体:  】【评论打印】 【关闭
相关文章
将Access移植到SQL Server(2004-11-10 23:29)
WORD和ACCESS的数据交换(2004-3-24 22:16)
Access数据有效性检查(2004-3-24 22:15)
Access 数据库表规格(2004-3-24 22:13)
ACCESS数据库中的中文报表制作(2004-3-24 22:10)
保护Access 2000数据库的安全(2004-3-24 21:37)
使用中型Access数据库的一点经验(2004-3-24 21:10)
发表评论 共有0条评论   >> 查看详细评论
用户名: 密 码: 匿名评论
请发表评论时遵纪守法并注意语言文明!
 
用户名 评论内容
目前尚无评论!
 
文章搜索
关键字:
精彩文章回顾
 SQL Server 2
 ASP、JSP、PHP
 利用ASP技术开发基于W
 WORD和ACCESS的
 Access 数据库表规
 SQL Server的性
 SQL 非正常删除日志文
 拷贝的SQL Serve
广而告之
关于我们 | 广告服务 | 诚邀加盟 | 友情链接 | 网站地图 | 联系方式
Copyright ©1998-2005, All Rights Reserved.
版权所有 学习无忧网 51study.net
广告或空间合作,请QQ:70046085联系我