delphi Ado 执行带有冒号字符语句的处理。
2007-08-20 11:50
127 查看
用DELPHI的程序员都知道ADO的易用性,用ADO控件操作数据库是非常受欢迎的,但使用ADO也会碰到一些麻烦问题,就像DELPHI 5下如果要用ADO就要先装好ADO补丁,有的SQL的语句在数据库工具里执行可以成功但用DELPHI的AdoQuery执行不一定能成功。今天又碰到这问题:ADO要执行的SQL语句里同时包含有": 时就会有问题,如下面SQL语句:
AdoQuery1.Close;
AdoQuery1.Sql.text:='Insert T_SavePartTab(FID, FPart) Values(''0001'',''"c:/part1";"d:/part2"'')';
AdoQuery1.ExecSql;
执行这语句后可能就会提示:不正常地定义参数对象。提供了不一致或不完整的信息。
这是由于ADO控件在解析SQL语句时碰到" 里的: 时认为: 后的是变量,是在参数Parameters[]里进行赋值的变量,而实际上: 我们只是当字符用,这时报出要定义参数显然不是我们想要的。
这个问题的解决方法:
1、通过替换: 或" 字符为其它字符(如" 替成' );
2、不让ADO控件检测SQL语句参数变量,AdoQuery1.ParamCheck := false;
这两种情况只能结合实际情况使用,都有弊端这里就不哆嗦了,欢迎大家讨论!
wccyxf@163.com
AdoQuery1.Close;
AdoQuery1.Sql.text:='Insert T_SavePartTab(FID, FPart) Values(''0001'',''"c:/part1";"d:/part2"'')';
AdoQuery1.ExecSql;
执行这语句后可能就会提示:不正常地定义参数对象。提供了不一致或不完整的信息。
这是由于ADO控件在解析SQL语句时碰到" 里的: 时认为: 后的是变量,是在参数Parameters[]里进行赋值的变量,而实际上: 我们只是当字符用,这时报出要定义参数显然不是我们想要的。
这个问题的解决方法:
1、通过替换: 或" 字符为其它字符(如" 替成' );
2、不让ADO控件检测SQL语句参数变量,AdoQuery1.ParamCheck := false;
这两种情况只能结合实际情况使用,都有弊端这里就不哆嗦了,欢迎大家讨论!
wccyxf@163.com
相关文章推荐
- 关于MySQL5.5不能执行带有中文字符的语句解决方法
- 更新OPC点位值,值中带有特殊字符影响sql语句执行的解决办法
- java下载文件名中带有中文字符乱码的处理
- 在mybatis执行SQL语句之前进行拦击处理
- 批处理执行多条语句
- 在C#中执行带有GO的批量sql语句
- MySQL语句中文字符处理
- 处理执行sql语句
- 执行字符串SQL语句--带有参数的存储过程以及 int类型的字符串变量注意事项
- sql语句中一些特殊字符的处理
- (C#)执行多条SQL语句,事务处理
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- java操作mysql时执行带有日期语句的误区
- c#描述异常处理语句try、catch、finally执行时的相互关系
- 浅析SqlServer简单参数化模式下对sql语句自动参数化处理以及执行计划重用
- 在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例
- (转)SQL 语句中特殊字符的处理及预防sql 注射
- makefile文件中,make 不跟参数,只会执行makefile中第一条(带冒号的语句)
- Oracle 用Execute执行带有参数的字符串语句。
- Oracle的sql条件带有 字符无法执行