sql 查询问题:(100分)

  • 主题发起人 主题发起人 mghpl
  • 开始时间 开始时间
M

mghpl

Unregistered / Unconfirmed
GUEST, unregistred user!
大家帮我一下,请部些问题如何解决:
sql:='select lj from gk where chm='''+abc+''''
些sql语句中,abc为字符串变量,执行时我遇到这样的问题,abc的值中如果有'(单引号,例如abc的值为:jjw'jdjs字符时)这个符号就报错,请问如何解决?
 
改一下:
sql:='select lj from gk where chm='''+abc+''''

如果abc为jjw'jdjs 则重新赋值一下: abc:= jjw''jdjs

然后再执行 sql:='select lj from gk where chm='''+abc+'''' 应该没事了
 
with ADOQuery1 do
begin
Close;
SQL.Text := 'select lj from gk where chm=:chm';
Parameters.ParamByName('chm').Value := 'abc';
Open;
end;
 
to 深邃眼眸:
非常感谢你的帮助,我试试.
 
to 深邃眼眸:
我这个ABC变量可不能自己改呀,还有其它办法吗?

to lanyaoshi:
我试了,不行呀,还能给我指点吗?
 
恩,我知道你不能自己改那个参数

function TForm1.GetString(ABC: string): string;
var
Flag: string;
index: Integer;
begin
index := Pos('''',ABC);
if index > 0 then
Result := Copy(ABC,0,index) + '''' + Copy(ABC,index+1,Length(ABC)-index);
else
Result := ABC;
end;

你用这个函数试试,该函数只处理只有一个'号的情况
 
忘记写声明了,记得加上.
function GetString(ABC:string):string;
 
uses StrUtils;
......
var
s:string;
....
s:=AnsiReplacetext(abc,'''','''''');
sql:='select lj from gk where chm='''+s+'''';
...
end;
 
function TForm1.GetString(ABC: string): string;
var
index: Integer;
begin
index := Pos('''',ABC);
if index > 0 then
Result := Copy(ABC,0,index) + '''' + Copy(ABC,index+1,Length(ABC)-index);
else
Result := ABC;
end;

去掉Flag变量,多余的
 
是不是 sql:='select lj from gk where chm=''''+abc+'''''呀?
 
to kaida
to 深邃眼眸
按你们提供的函数,查询出来的结果,都出现了abc的值由原来的(jjw'jdjs)变为(jjw'jdjs),但我是要直接取该查询返回值的,这样就又得加个函数去掉一个单引号了,还有其它好的办法吗?
 
---但我是要直接取该查询返回值的,这样就又得加个函数去掉一个单引号了

上面那句话看的不明白啊,你再说说
 
查询出来的结果,都出现了abc的值由原来的(jjw'jdjs)变为(jjw'jdjs)?
同一条记录查询结果的值不可能因abc而变化!!!只可能因abc不同而查到或查不到。
 
对不起,两位兄弟,是我搞错了,是这样的,我要判断数据库中是否有我要的数据,如果有,我就作一个跳转并将查询到的值直接传到其它地方,你们给的函数是对的,是我直接将变量内的值作为查询到的值传了,真是大意,[:(]
谢谢两位热心的兄弟!
 
后退
顶部