Delphi的Query控件计算机等级考试

文章作者 100test 发表时间 2009:06:24 19:07:43
来源 100Test.Com百考试题网


  2009年下半年全国计算机二级考试报名时间从6月1日起已经开始报名。详情点击:2009年下半年全国计算机等级考试各地报名点汇总。2009年下半年全国计算机二级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库

  用Delphi做过数据库编程的朋友肯定熟悉Query控件,这个控件实现的功能是执行一条SQL语句或一个SQL脚本,在我们进行数据库开发中使用的频率非常高。笔者在多年的使用过程中发现用好这个控件有两点要非常注意。
  第一点是:区分好Query控件的Open方法和ExecSQL方法。这两个方法都可以实现执行SQL语句,但要根据不同情况分别使用。如果这条SQL语句将返回一个结果集,必须使用Open方法,如果不返回一个结果集,则要使用ExecSQL方法。例如:
  ……
  Query1:Tquery
  Query2:Tquery
  ……
  Query1.Close.
  Query1.SQL.Clear.
  Query1.SQL.Add(\0select * from AA\).
  Query1.Open.
  ……
  Query2.Close.
  Query2.SQL.Clear.
  Query2.SQL.Add(\0delete AA\).
  Query2.ExecSQL.
  ……
  上述的例子中,Query1所执行的SQL语句将返回一个结果集,因此必须用Open方法;而Query2所执行的是一条删除表记录语句,不返回结果集,因此用ExecSQL方法。
  第二点是:如果Query控件用Open方法执行SQL语句,并且所用的SQL语句访问的是一张或几张频繁使用的表,在执行完SQL语句后,一定要调用SQL的FetchAll方法,能大大地减少死锁发生的概率。例如:
  ……
  Query1:Tquery
  ……
  Query1.Close.
  Query1.SQL.Clear.
  Query1.SQL.Add(\0select * from AA\).
  Query1.Open.
  Query1.FetchAll.
  ……
  在上述的例子中,如果AA是一张被频繁访问的表,在对这个表执行这一条0select语句的同时,如果恰好有其他人对这张表执行删除或更新操作,便有可能发生死锁。Query1.FetchAll这条语句实现的功能是释放加在表AA上的锁,这样死锁的发生概率可以大大减少。避免死锁,对我们将来进行大型数据库开发尤为重要。

相关文章


DELPHI存取JPEG、BMP图像到数据库完整解决方案计算机等级考试
Delphi与SQLServer存储过程编程详解计算机等级考试
Delphi的Query控件计算机等级考试
delphi调用sqlserver2000存储过程计算机等级考试
Delphi开发单机瘦数据库程序要点计算机等级考试
数据库常见错误计算机等级考试
在DELPHI程序中自动设置ODBC数据源计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛