我想把一个包含单引号的字符串入库,哪位兄弟能帮一下忙!(100分)

  • 主题发起人 主题发起人 大人
  • 开始时间 开始时间
给详细一点,最好给一点原码
 
用asp还是delphi??
把单引号替换成两个单引号就行了。
replace(str,"'","''")
 
我用的是delphi
str是一个包含单引号的字符串,
我用
querysql:='insert into b_search.dbo.url(url,name) values('+''''+url+'+''''+','+''''+name+''''+')';
因为name的值可能包含单引号,每次调试都报缺少一边括号,请问如何解决!谢谢
 
如果这个入库的字符窜是常量
即s:='I'm good' ,你可以写成 s:='I'+''''+'m good';
如果是变量,就更好办了
s:=edit1.text;
然后
query1.parambyname('f1').asstring:=s;
...
query1.execsql 即可
 
我的建议,改用参数方式,这样清楚
 
你把'用#39替换试试。
 
lhxu:
我用了你的方法,可是出现了not enough parameters的错误,由于我是delphi的初学者,请详细的说一下好吗?最好能写一段代码,我用的是变量!
 
你用这种方法试试:
querysql := 'insert into b_search.dbo.url(url,name) values('
+ '''+ url + '''+ ',' + ''' + name + ''' + ')';
注意:实际上,在上述字符串中,中间每三个单引号代表一个嵌入的单引号。
 
1.出现not enough parameters的错误是当然的:因为querysql:='insert into b_search.dbo.url(url,name) values('+''''+url+'+''''+','+''''+name+''''+')';中SQL不会把URL和NAME当参数,应这样写...+:url...+:name...,即DELPHI中参数名前应加上‘:’;
2.其实你的语句用存储过程实现更全理。
 
刚才的语句有错,最后应是4个单引号,即:
querysql := 'insert into b_search.dbo.url(url,name) values('
+ '''+ url + '''+ ',' + ''' + name + ''' + ')'''';
不知能否解决?
 
假设数据库表table1有三个字段 f1,f2,f3均string 型
现在要插入一条记录(edit1.text,edit2.text,edit3.text)
s1:=edit1.text;
s2:=edit2.text;
s3:=edit3.text;
你的query的sql语句这样写:
insert into table1 (f1,f2,f3)
values (:s1,:s2,:s3)
然后
query1.parambyname(s1).asstring:=s1;
query1.parambyname(s2).asstring:=s2;
query1.parambyname(s3).asstring:=s3;
query1.execsql;
即可
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部