请问我用的是delphi 6 在数据插入数据库时,在汉字输入时出现截断,而是英语时没有这种现象,why? 解决问题一定给分。我用的是SQL SERVER 2000 字段是 varchar 长度255,可是我只是输入几个汉字,如'重庆移动',就会成'重庆',用到存储过程,是用sql 写的
begin transaction
insert e_Register(
sOperatorName, nOperatorID,
nClientID, sClientName,
sItem, sbrand,
stype, dDateTime,
nStatus, sFlag,
sTableName, bPaid,
bOwner, bExigence,
eCode , sArea)
values(
:sOperatorName, :nOperatorID,
:nClientID, :sClientName,
:sItem, :sBrand,
:stype, :dDateTime,
:nStatus, :sFlag,
:sTableName, :bPaid,
:bOwner, :bExigence,
:eCode , :eArea )
select nID = max(nID) from e_Register
commit transaction
begin transaction
insert e_Register(
sOperatorName, nOperatorID,
nClientID, sClientName,
sItem, sbrand,
stype, dDateTime,
nStatus, sFlag,
sTableName, bPaid,
bOwner, bExigence,
eCode , sArea)
values(
:sOperatorName, :nOperatorID,
:nClientID, :sClientName,
:sItem, :sBrand,
:stype, :dDateTime,
:nStatus, :sFlag,
:sTableName, :bPaid,
:bOwner, :bExigence,
:eCode , :eArea )
select nID = max(nID) from e_Register
commit transaction
你用sql的profile跟踪一下你的sql语句,是否在delphi中被截断,给出delphi中的代码。
不知是不是你写错了,sql插入记录
insert into tablename(...) values(...)
2.
把varchar 类型,改为nvarchar 试试
如果非要用,则用此函数转换一下:function ToCDSParamsString(s:string):string;
var
ws:WideString;
i:Integer;
begin
ws:=s;
for i:=1 to Length(ws) do
begin
if Ord(ws[i])>255 then
s:=s+' ';
end;
Result:=s;
end;
begin
ProcedureName :='SP_OPE_SaveUser';
with Parameters .AddParameter do
begin
Name:='@ISBN';
Size:=38; //在这里一定要指定长度否则就不行。
DataType := ftString;
Direction := pdInput;
Value := ISBN;
end;
.........
会不会是数据库字段小了,只有两个汉字,字段大小不会是5或者6吧
UP