sql.Add('select * from tb_cl where '+p+'='+''''+s+'''');这句中的+号和单引号怎么理解?
tb_cl 是数据库的名称.
tb_cl 是数据库的名称.
解决方案 »
- 常见的错误!Record not found or changed by another user
- dephli 和 .net 通信
- 如何使符合条件的行闪烁
- 大家知道很多扫描软件扫描完成后结果会自动生成html报告文档,现在我想提取我需要的信息,该怎样实现呢?
- 对象的引用概念〉???在线!
- 哪位有关于delphi自带安装程序制作工具Install Shield Profession的帮助文件啊.小弟有急用谢谢了
- 怎么不让窗口自动弹出
- 哪里可以下载到installshield?
- 关于类的问题。
- 一个MSDN的问题
- 如何将dbgrid中的数据保存到内存数据集中(如clientdataset)
- 在window xp中怎么屏蔽任务管理
应该是select * from tb_cl where p = ' s ' 吧
在delphi里字符串是在''里的,但如果要在字符串里表示'号,就得用转意字符,也就是'加上要表示的符号,也就是'',这样加起来就是''''了.
sql.Add('select * from tb_cl where '+p+'='+'\''+s+'\'');
换回delphi的语法,把转义符号替换回',这样你就明白为什么要这么多个引号了。
sql.Add('select * from tb_cl where '+p+'='+''''+s+''''); {简化为:}
sql.Add('select * from tb_cl where '+p+'='''+s+'''');{再化为:}
sql.Add('select * from tb_cl where '+p+'='+ QuotedStr(s));
清晰多了,是吧?
sql.Add('select * from tb_cl where '+p+'=:s');
parameters.parambyname('s').value := s;
sql.Add('select * from tb_cl where '+p+'='''+s+'''');
我还是这么写的时候多一些。
如果用ado可以这样写 sql.Add("select * from tb_cl where "+p+"='"'+s+'"'); 这样也好看些
sql.Add('select * from tb_cl where '+p+'='+''''+s+'''');
更改为:
sql.Add('select * from tb_cl where ' + p + '=' + quotedstr(s));最外面的两个单引号为完整的SQL语句
第二,三个单引号为 字段名(表里面的字段) 连接用
第四个单引号 把等号 连接起来 形成入: 'Select * from 表 where 字段='这种形式
后面当然形成字段值 '''' 最后形成 这种 类似的语句 'Select * from 表 where 字段=''字段值''';
上面只不过用''''作为变量 s的连接字符串.
建议最好避开字符串混淆:sql.Add('select * from tb_cl where '+p+'='+''''+s+'''');