Delphi数据库开发之SQL写法的技巧1

  数据库应用程序肯定离不开SQL语句的应用,而平常用得最多的应该是TQuery,TADOQuery一类的控件,其他的还有TUpdateSQL,TADOCommand等控件。SQL语句就是在以上两种控件的SQL属性中设置。SQL属性的数据类型是TStringList。可以用SQL.Text、SQL.Add()、SQL.Clear等方式进行操作。   简单来说就是将一个字符串赋值给SQL属性,实现数据的操作。这个字符串就是SQL语句。例如:表Table1,有字段 A(int) B(varchar2) C(long row)。如果要插入一条记录,其中A=2,B='pic'。在DBMS中可以执行 SQL语句的地方写入INSERT INTO Table1(A,B) VALUES(2,'pic')。 但在Delphi的控件中有些地方要注意。B本身是字符串类型,对其赋值要加引号。而SQL.Text属性是String类型,所以在Delphi中要这样写 SQL.Text:='INSERT INTO Table1(A,B) VALUES (2,''pic'')'; 值'pic'前后都要用两个单引号。因为AB的值很多时候是在运行时获得,所以可以这样写 SQL.Text:='INSERT INTO Table1(A,B) VALUES ('+IntToStr(intA)+','''+strB+''')'; intA ,strB都是变量。但如果strB的值时带有单引号的话,问题就会出现了,因为这条SQL语句最终会发送到DBMS中执行,strB字符串所带的单引号会把语句的机构破坏,产生很多无法预计的后果。   上面的语句带了太多的引号,可读性太差,所以可以稍微改一下。Delphi提供了QuotedStr函数,该函数返回一个两端带引号的字符串,对于原字符串中的单引号,函数会把转换成两个单引号。SQL.Text:='INSERT INTO Table1(A,B) VALUES ('+IntToStr(intA)+','+QuotedStr(strB)+')'; 但同样对于带单引号的问题仍然无法解决。可以看到上面Table1还有一个C字段是Long Raw类型的,又要如何赋值呢?   SQL参数就是最佳的解决方案了。SQL.Text:='INSERT INTO Table1(A,B,C) VALUES (:A,:B,:C)'; :A 和:B就是参数变量,在以后根据需要赋值   Query.ParamByName('A').AsInteger:=intA;   Query.ParamByName('B').AsString:=strB;   Query.ParamByName('C').LoadFromFile('C:a.jpg',ftBlob); 这样既可以灵活的设置各字段所需的值和数据类型,而且SQL语句的可读性得到很大的提高。对于字符串变量所带的单引号、百分比、星号等敏感的字符都可以自动进行转换。

转载于:https://www.cnblogs.com/Byeah/archive/2004/08/09/3162432.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值