1.引号配对:
  这是在Delphi使用SQL语句时容易出错的地方,由于delphi规定在字符串中用两个西文的单引号“''”表示一个“'”,在拼装语句的时候就容易疏忽遗漏。
  Delphi里有个函数QuotedStr能够在字符串的头尾加上一个西文的单引号【'】,这个函数的定义:function QuotedStr(const s: string):string;
  因此,如果要在一个语句中拼装入字符串类型的变量就可以用到这个函数。

2.

区别不同的写法
  由于各个数据库的厂商对标准SQL都有各自的扩展,所以在书写SQL语句的时候就要区分不同数据库的不同写法。
  例如:对于连接字符串,MS SQL Server用的是【+】而Oracle用的是【||】。

3

执行前检查
  在执行SQL语句之前需要进行必要的检查,我们可以用ShowMessage()函数来查看我们写的语句是否正确,对于TString类型的语句我们可以用Memo控件进行查看。
  最好加个确认过程,当发现sql有问题的时候就不执行,以避免不必要的意外。

4模拟执行
  在Delphi中写SQL前,有条件的最好在数据库自带的运行SQL的工具中先尝试书写出正确的语句,如MS SQLServer就用查询分析器,Oracle就用SQLPlus,delphi自带的SQL Explorer也可以。

5

空格不要漏:
  我们经常要拼装SQL语句,特别是where条件句,在各个语句中别忘了头尾加上空格。因为在一个语句中我们会注意用空格分开关键字但是往往忘了头尾的空格。例如:
sSQL=' select * from students Where ''a''=''a'' '
sWhere='and age >= 14'
sSQL = sSQL+sWhere;
sWhere='and age <= 16'
sSQL = sSQL+sWhere;
这个时候sSQL的内容为【select * from students where 'a'='a' and age >= 14and age <=16】
这个SQL语句肯定错了,因为【and age >=14】和【and age <= 16】之间没有空格,数据库分析的时候认为你需要的是【age >= 14and】的数据,能不出错吗?

实例1;

sql.add('select mpgg=bh+''X''+bk from plcs_t ') ;
在delphi中''中如果想出现',则用''来表示
如:print('select mpgg=bh+''X''+bk from plcs_t ');
会显示
select mpgg=bh+'X'+bk from plcs_t

字符串 AB'CD   要写成  'AB''CD'

实例2

在字符串两加单引号。

对于本来说属于字符串的每个单引号,用两个代替。

字符串 AB'CD   要写成  'AB''CD'

以上两条是在DELPHI中使用单引号的原则。

如果字符串是要提交给SQL的,因为也用单引号做分隔符,提交给它的字符串中的个单引号也要用两个来代替。

所以如果要将字符串 AB'CD 提交给 SQL 则要写成 ''AB''''CD''

如要给在表 Table1 中添加一条记录 AB'CD

DELPHI中要写成这样

ADOQuery.SQL.Add('insert into Table1(Field1) values(''AB''''CD'')');

delphi 中sql的语法规范的更多相关文章

  1. Delphi中SQL批量插入记录

    http://www.cnblogs.com/azhqiang/p/4050331.html 在进行数据库操作时, 我们经常会遇到批量向数据库中写入记录的情况. 在这里我提供3种操作方式:   1.  ...

  2. Delphi中For In 语法应用实例

    一.遍历 TStrings var List: TStrings; s: string; begin List := TStringList.Create; List.CommaText := 'aa ...

  3. delphi中sql实现while循环插入,不存在则插入

    ' declare @i int; '+ ' set @i=0; '+ ' while @i<4 '+ ' begin '+ ' insert into NBCommission(Type,It ...

  4. 总结MySQL中SQL语法的使用

    --where子句操作符: where子句操作符 = 等于 <> 不等于(标准语法) != 不等于(非标准语法,可移植性差) < 小于 <= 小于等于 > 大于 > ...

  5. Delphi中使用比较少的一些语法

    本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ---Murphy 1,构造和析构函数: a,构造函数: 一般基于TComponent组件的派生类 ...

  6. (转载)delphi 中如何调用sql 存储过程

    delphi 中如何调用sql 存储过程 使用TADOStoredProc组件,可以,给你举个例子好了 with ADOStoredProc1 do begin Close; Parameters.C ...

  7. mysql中SQL执行过程详解与用于预处理语句的SQL语法

    mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...

  8. 转:Delphi中使用比较少的一些语法

    http://www.cnblogs.com/Murphieston/p/5577836.html 本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ...

  9. JavaScript 中语法规范及调试

    JavaScript 中语法规范及调试 版权声明:未经博主授权,内容严禁分享转载 JavaScript 开发环境 JavaScript 脚本可以使用任意一款纯文本编辑器进行编程开发. 常见的前端开发编 ...

随机推荐

  1. fiddler还是浏览器的问题

    当我在浏览器里输入http://localhost/infomanage/price?cityid=1&cateid=246&timer=3 后端接收的参数是timer的时候,浏览器会 ...

  2. 命令行解决mysql中文乱码

    修改my.ini文件中的 [mysql] default-character-set=gbk [mysqld] # The default character set that will be use ...

  3. java操作mongodb——更新数据

    Java中可以通过updateOne,updateMany,replaceOne方法进行集合的文档更新.但是 _id 是不能更新的 updateOne只会更新一条数据,即使通过Filters.lt(& ...

  4. 49、word2vec - tensorflow

    Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32Type & ...

  5. Python 清理HTML标签类似PHP的strip_tags函数功能(二)

    没有发现Python 有现成的类似功能模块,所以昨天写了个简单的 strip_tags 但还有些问题,今天应用到采集上时进行了部分功能的完善, 1. 对自闭和标签处理 2. 以及对标签参数的过滤 fr ...

  6. Vim/gvim容易忘记的快捷键

    正常模式==>插入模式 按i 在光标前插入 按I 在行首插入 按a 在光标后插入 按s 删除光标所在的字符再插入 按A 在行末插入 按o 在当前行之下新建行 按O 在当前行之上新建行 按S 删除 ...

  7. Dev的GridControl控件选择框的使用

    先介绍环境:VS2010,dev11.2 想要达到的效果:,当单击某一行时前面的选择框选中. 在网上找了不少,但是感觉跟我想的做法很不一样(有很多都是再另外添加一个什么CheckBox,这个我在Dev ...

  8. ios发布笔录

    需要一张1024x1024的icon 发布尺寸4.7英寸  1334x7505.5英寸 2208-12424英寸  1136-6403.5英寸 960-640ipad  2048x1536 视频 ip ...

  9. Nginx下$_POST获取不到数据的解决方法

    运行环境:windows+phpstorm+Nginx 步骤1:找到php.ini 配置文件,查找enable_post_data_reading变量,把Off改为On,确保其打开状态: 步骤2:将p ...

  10. Using YARN with Cgroups testing in sparkml cluster

    部署服务器: sparkml 集群 ########### sparkml ########## sparkml-node1 # yarn resource manager sparkml-node2 ...