注册 登录
编程论坛 Delphi论坛

TClientDataSet中commandtext的问题

zhongjinting 发布于 2007-04-14 16:57, 2359 次点击
在应用TClientDataSet时,我想保存数据,代码如下:
with cdsSystem do
begin
CommandText:=CommandText+'insert into T_Customer('+
' CustomerID,Code,Name,'+
' PostalCode,CreateDate,AreaID)'+
' values(:p2,'+
' '''+fieldbyname('Code').asstring+''','+
' '''+fieldbyname('Name').asstring+''','+
' :p3,'+
' :p4,'+
' :p5);';
Params.ParamByName('p2').Value:=fieldbyname('CustomerID').asinteger;
Params.ParamByName('p3').Value:=fieldbyname('PostalCode').AsInteger
Params.ParamByName('p4').Value:=fieldbyname('CreateDate').asdatetime;
Params.ParamByName('p5').Value:=fieldbyname('AreaID').asinteger;
end;
现在我想不用参数赋值,直接把值放 到SQL语句的values()中,但引号的问题总困扰着我,对于字符类型
的值我懂了,但对于这些数值型和日期型应当怎么加引号才对呢
比如:
CommandText:=CommandText+'insert into T_Customer('+
' CustomerID,Code,Name,'+
' PostalCode,CreateDate,AreaID)'+
' values(fieldbyname('CustomerID').asinteger,'+
……
……
这里的fieldbyname('CustomerID').asinteger应该怎么使用引号才正确呢?
对于这些字段,我数据库里用的是NUMBER型和date型(oracle)
请问各位大侠,应该如何做呢?
谢谢~~~!~!~!~!~!

[此贴子已经被作者于2007-4-14 17:00:54编辑过]

11 回复
#2
nongen2007-04-14 22:35
数字日期:' '+date+' '
字符串:' '''+str+''' '
#3
zhongjinting2007-04-14 23:35

似乎不行哦,我是这样做的:
' values('+
' '+fieldbyname('CustomerID').asinteger+','+ -------数字
' '''+fieldbyname('Code').asstring+''','+
' '''+fieldbyname('Name').asstring+''','+
' '''+fieldbyname('SimpliedName').asstring+''','
' '''+fieldbyname('Address').asstring+''','+
' '''+fieldbyname('Telephone').asstring+''','+
' '''+fieldbyname('Fax').asstring+''','+
' '+fieldbyname('CreateDate').asdatetime+','+ -------日期
……………………
……………………
编译时没通过,提示数值和字符、字符和日期不匹配。
请问应该如何改?
谢谢指教~!~!~!

[此贴子已经被作者于2007-4-15 19:07:03编辑过]

#4
zhongjinting2007-04-15 20:45
板主大哥,有空的时候帮忙解决下这个问题~!
谢谢~!
#5
nongen2007-04-16 20:15
你看你的数据库字段类型
#6
zhongjinting2007-04-16 20:34
在数据库里用的是NUMBER型和date型(oracle),那应当怎么连接起来呢?
日期:' '+date+' ',数字:' '+number+' '
这样连接不行吧,字符串和日期、数字无法连接啊,应该怎么连接呢,才能使得其为合法的SQL语句~!~!


#7
nongen2007-04-17 03:11
oracle没用过。不过MSSQL中日期型其实就是浮点型
#8
zhongjinting2007-04-17 08:34

对于我上面这个问题来说,应该与数据库无关吧,我只是想其成为合法的SQL语句,问题是应当怎么样加引号连接才是合法的,字符串和数字类型能否合并起来,有没有解决的办法?

#9
nongen2007-04-17 12:42

datetime跟string同样处理。

#10
zhongjinting2007-04-17 15:20

似乎不行哦,我试了下,还是提示不匹配,哎,看来只能用参数了 。
但是这里有个问题,我保存数据的时候,是多条SQL语句一起提交,比如说,我增加了三条记录,
那么就一次性提交三条SQL语句,如果用参数的话似乎很不方便。
我测试的时候发现,参数最后才把值赋给SQL语句的,也就是说,如果参数只写一次的话,最后三记录的参数都会用这些参数,这样会导致出现数据完整性的问题,“数值不唯一”,提交出错。
提交这些SQL语句的时候我是用循环的,将所有的SQL加在一起,然后一起提交。
请问这个问题怎么解决呢?

#11
zhongjinting2007-04-19 17:25
问题解决了~!~!
谢谢版主~!~
#12
phonbob2007-04-21 17:37
怎么弄的?能不能说说。
1