如何保存一条带''的字符串到数据库(50分)

  • 主题发起人 主题发起人 热水
  • 开始时间 开始时间
可以用转意字符,如:''''表示单引号。
 
用两个单引号表示一个单引号, 如:
s := 'It''s OK!';

 
這個問題我也遇到過,我是這樣解決的:
把字符串解碼后再寫數據庫,讀出后解碼一次就還原了
 
to goddy:
这个方法我提出问题之前就考虑到了,用双引号代替代单引号。但总觉
 
不必代替呵,其实pascal也有一个唯一的转义符,就是''
 
to TYZhang and kthy:
你们还没有理解我的意思,可以你们没有碰到过,所以没有深入他人提出问题。
所以建议你们以后回答之前,先明白再。。。。
 
你的意思不就是:
因为字符串中含有两个单引号,在做字符串处理时,因Delphi的转意字符的关系,
将它默认为一个单引号,而两个单引号自后的字符又将引起错误。
以上是不是你的意思????????????????????????
 
楼上:

你理解错了。
 
To TyZhang:
看来你还没明白过来,我给你举一个我要应用的例子吧:
我有一个表专门用来存储不同报表取数据源的SQL语句。即有一个Text类型的
字段专门存储:“ Select * from TableName inner join ..... where
DepartID='10' and bm='20' "的语句。
我要把它显示在TMeno控件中,以便于客户修改。实际上,我正结合Excel做一个
报表管理模块。如果实在不行,只好自己编一个函数进行来回转换了。
 
原来是这么回事。。。。

但是你的这个语句已经是字符串了啊,如果仅对SQL语句进行显示/修改/存储,直接使用
就可以啦,干嘛还要进行转换(如果你要将它显示在Memo中,你可以查询出这个存储的SQL
语句,用AsString转换赋值给Memo的Text就可以啦,如果是修改后保存,把Memo的Text赋给
字段就行啦,如果要对这个SQL语句查询出记录集,也只要将它赋值给Query.SQL.Text就可
以得),你是不是要对这个字符串进行额外的运算。
 
给你一个函数。
function CheckSQM(sSQL: string): string;
var i:integer;
s:Pchar;
begin
s:=pChar(sSQL);
for i:=0 to Length(s)-1 do
begin
if s='''' then
Result:=Result+s+''''
else
Result:=Result+s;
end;
 
各位大侠,此言不对哦。。。原因在此:

我的数据资料如下:

1. [“asdfasd,asdfasdf”] 注意[]当中全是资料

2. [aasdfds'ssfasdfsdfsd] 注意[]当中全是资料

我刚好碰到这样的资料要求原封不对送到数据库我的天,当天我就疯了。。

这还没好全呢?

随后我用其它的方式解决了这个破问题!

 
可以用SQL带参数的方式提交给数据库,不需要做任何转换
 
我已经编了一个函数进行转换。只能这样解决了。
 
后退
顶部