明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1416|回复: 2

数据记录和实体对应的惟一性,所具备的SQL知识!

[复制链接]
发表于 2007-2-2 16:15:00 | 显示全部楼层 |阅读模式

AutoCAD二次开发的14.5 章节

编程思路是 1 ObjectID、Handle和对象本身 2 记录和实体对应的惟一性

效果示例见:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=57835

数据记录相关的数据库应掌握如下要点

1 Access应用程序对应的对象库和创建方法

     Ms Access 2000  引用的对象库Microsoft Access 9.0 Object Library 创建应用程序对象的方法CreateObject("Access.Application.9")

2  创建ADO连接

cn.Provider = "Microsoft Jet OLEDB 4.0"

      在VB+ACCESS+SQL条件,引用MicroSoft Jet OleDb 4.0数据库环境下, SQL语法格式应为
JET SQL语法格式。

SQL 与 JET SQL 有什么区别《查询》
SQL 是结构化查询语言的缩写,是一种标准。
现在一般将标准的 SQL 语言规范称为 ANSI SQL XX,后面的 XX 表示版本,比如 ANSI SQL 92 规范。

很多公司的数据库软件都使用 SQL 语句来进行数据库操作,但是各大公司都对标准的 SQL 语言规范进行了扩展,因此 SQL 很多分支,各种分支都有其特殊且与其他分支不兼容的地方。 JET SQL 与 T-SQL 都是微软所特有的 SQL 分支,JET SQL 用于 ACCESS 数据库软件,T-SQL 用于 SQL SERVER 数据库软件。

本文为什么要对SQL作细化总结?理由有2点

1 在编程中,在编程实现中,使用SQL语言多层套嵌时,出现了括号问题,找了很多资料原因才找到。如:

   多层套嵌时 JET SQL 必须将 SELECT 子句用括号 ( ) 一层一层包含起来,而 T-SQL 没有此规定
Jet SQL 示例:
select [table1].[field1],[table2].[field4],[table3].[field3],[table4].[field4]
from ((([table1] left join [table2] on [table1].[field1]=[table2].[field1])
    left join [table3] on [table1].[field1]=[table3].[field1])
    left join [table4] on [table1].[field1]=[table4].[field1])
T-SQL 示例:
select [table1].[field1],
       [table2].[field4],
       [table3].[field3],
       [table4].[field4]
from [table1] left join [table2] on [table1].[field1]=[table2].[field1]
              left join [table3] on [table1].[field1]=[table3].[field1]
              left join [table4] on [table1].[field1]=[table4].[field1]
2 SQL语法如果用好了,要比其它方法效率高。如

在一个access数据库中,有三个Table表。每个表都有一个实体句柄Handle或Object(建立线、圆等实体属性不同,不须建多个库),须要采用SQL技术将三个表中的ENT字段合到一个表中。这种工作方法的效率要比采用循环打开三个表赋值高,而且简单,实用.
select (a.ent & b.ent & c.ent) as Ent from ((a _
  inner b  on a.ID = b.ID) _
  inner c  on a.ID = c.ID)

 要是采用rst1,rst2,rst3
do until rest1.eof()

loop
do until rest2.eof()

loop
do until rest2.eof()

loop
光写程序就要几十条

因此,本文总结JET SQL知识,目的是在数据记录和实体对应的惟一性的编程时,提高工作效率。

 楼主| 发表于 2007-2-2 16:21:00 | 显示全部楼层

调用Access 2000的mdb文件,所具备的基本知识

Access 2000中,为了支持Access的新特性,为了和ANSI-92的标准更加一致,并且允许在Access  Microsoft® SQL Server™间的更好的兼容性,包含在Microsoft Jet 4.0数据引擎中的SQL作了许多增强。Jet数据引擎现在有两种格式的SQL语法:一种是支持以前使用的SQL语法,另一种是支持新的SQL语法规范。需要格外注意的是,只有在用户使用ActiveX® Data Objects (ADO)Jet OLE DB provider时新的语法才是可用的,而当前通过Access SQL View接口或者DAO是无法使用新的语法的。本文指出只有通过Jet OLE DB provider  ADO才能够使用某个特定的SQL命令。 

Access的上一版本中,数据访问对象(DAO)是主要的数据访问方法。而现在发生了改变,尽管DAO 仍旧被支持,但新的数据访问方法是使用ADOADO是微软的通用数据访问战略(Microsoft's Universal Data Access strategy)的一部分,其最基本的假设是无论数据存在那里都是可以访问的,不管是数据库、目录结构还是某重用户自定义的数据库。 

 楼主| 发表于 2007-2-2 16:24:00 | 显示全部楼层

SQL代码规范 

使用一致性的SQL代码规范。与所有的代码规范相同,目的是使用易读和易于理解的方式来显示代码。这就要通过空格、换行和大写关键字的结合使用来实现。通常来说,要使用大写字母来打印SQL的关键字,如果SQL语句必须换行,尽量使SQL语句的主要部分一起换行。看过一些例子之后,相信读者会对此有较好的感觉。 

不合格式的SQL代码 

CREATE TABLE tblCustomers (CustomerID INTEGER NOT NULL, [Last Name] TEXT(50) NOT NULL, [First Name] TEXT(50) NOT NULL, hone TEXT(10), Email TEXT(50)) 

良好格式的SQL代码 

CREATE TABLE tblCustomers ( 

...CustomerID INTEGER NOT NULL, 

...[Last Name] TEXT(5) NOT NULL, 

...[First Name] TEXT(50) NOT NULL, 

...Phone TEXT(10), 

...Email TEXT(50)) 

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 20:47 , Processed in 0.185247 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表