我用TQuery想将文本框中的一串文字(中文)写入数据库,但打开数据库表发现其中只有前一个或两个字,其余的都不见了。但如果文本框中输入的是字母和数字,却不会有问题,请问这是怎么回事?而且,如果我直接在SQL Server表中输入中文,也不会出错,而且可以读出。我的字段类型为varchar,长度为50。
是不是我的类型选取错了呢?应该怎样选取字段类型呢??
是不是我的类型选取错了呢?应该怎样选取字段类型呢??
调试欢乐多
双击TQuery,看看是不是在列表中限制了长度
用Varchar没错,与数据库没关系
另外,我还发现打开数据库表,那些不全的汉字后,跟着一个像“口”字一样的东西,我怀疑是不是汉字码的问题。
总之,请各位多多发言!谢谢!
用trim()删除空格就OK!!
你将varchar(50)设大点吧,如:200,这样你的字符串没有200长度时,数据库会自动调整的,不会浪费!!但varchar好像不能自动增长!!只是好像是!!我试过一下,不信你去看sql server的帮助吧!!
试一下吧,不行,再和我联系!!!
Help!Help!
输入后都年变????
我用nvarchar和varchar都试过了,还把TQuery的Params中的几个变量的size设为100(连最大4000都设过)可发现打开数据库表,点击记录不再只出现一个字后面跟一个“口”,而是最多只能显示我输入的一串汉字的前3个,后面也不再有“口”字出现。我怀疑是不是像 huojiehai(海天子) 说得,是哪里限制了字符串的传递,可找遍了,都找不到还有什么可能会影响字符串长度的地方。
请大家帮帮我。
我在ADOQuery2AfterInsert(DataSet: TDataSet)中加入了:
ADOQuery2.UpdateRecord;
还是不行。
to: dawnming(笨小孩)
我的DOQuery2的确是设置了固定字段,但长度为100,应该不止显示最多3个汉字吧?(而且再增加长度也没用)我得程序大致是这样的:
1、服务器程序端:
我在ADOQuery2的SQL属性加入的代码为:
Insert Into USERS(username,loginname,password,role) Values(:new_username,:new_loginname,:new_password,:new_role)
Params的属性中各变量:
DataType:ftFixedChar
direction:pdInput
NumericScale:255
Precision:255
size:100
2、客户端:
ClientDataSet2.Close;
ClientDataSet2.Params.ParamByName('new_username').AsString:=Edit4.Text;
ClientDataSet2.Params.ParamByName('new_loginname').AsString:=Edit5.Text;
ClientDataSet2.Params.ParamByName('new_password').AsString:=Edit6.Text;
ClientDataSet2.Params.ParamByName('new_role').AsString:=Edit7.Text;
ClientDataSet2.Execute;
Params的属性中各变量:
DataType:ftFixedChar
NumericScale:255
ParamType:ptUnknown
Precision:255
size:100请大家多提宝贵意见!!
很急!
会不会是Delphi本身的问题?