• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  数据库应用程序肯定离不开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语句的可读性得到很大的提高。对于字符串变量所带的单引号、百分比、星号等敏感的字符都可以自动进行转换。

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi对ini文件的操作发布时间:2022-07-18
下一篇:
DelphiXE5android获取网络状态《转》发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap