我用TQuery想将文本框中的一串文字(中文)写入数据库,但打开数据库表发现其中只有前一个或两个字,其余的都不见了。但如果文本框中输入的是字母和数字,却不会有问题,请问这是怎么回事?而且,如果我直接在SQL Server表中输入中文,也不会出错,而且可以读出。我的字段类型为varchar,长度为50。
是不是我的类型选取错了呢?应该怎样选取字段类型呢??

解决方案 »

  1.   


    双击TQuery,看看是不是在列表中限制了长度
    用Varchar没错,与数据库没关系
      

  2.   

    TQuery的Parameters属性中的各个参数项,我都看了,其中的Size都和数据库表字段的长度设为相同的。应该没设错。
    另外,我还发现打开数据库表,那些不全的汉字后,跟着一个像“口”字一样的东西,我怀疑是不是汉字码的问题。
    总之,请各位多多发言!谢谢!
      

  3.   

    查查SQLSERVER语种,中文好象应该是936什么的!
      

  4.   

    请问如何查SQLSERVER语种,“中文好象应该是936什么的”是什么意思?
      

  5.   

    不全的汉字后,跟着一个像“口”字一样的东西,那是空格!!!
    用trim()删除空格就OK!!
    你将varchar(50)设大点吧,如:200,这样你的字符串没有200长度时,数据库会自动调整的,不会浪费!!但varchar好像不能自动增长!!只是好像是!!我试过一下,不信你去看sql server的帮助吧!!
    试一下吧,不行,再和我联系!!!
      

  6.   

    不行啊,我设成200仍然不行。而且,我还重装了SQL Server2000,还是不行。
    Help!Help!
      

  7.   

    你用的是不是不是SQL2000而是7.0啊??
    输入后都年变????
      

  8.   

    你是不是用了nvarchar 了?
      

  9.   

    我装的是正版SQL 2000+SP2
    我用nvarchar和varchar都试过了,还把TQuery的Params中的几个变量的size设为100(连最大4000都设过)可发现打开数据库表,点击记录不再只出现一个字后面跟一个“口”,而是最多只能显示我输入的一串汉字的前3个,后面也不再有“口”字出现。我怀疑是不是像 huojiehai(海天子) 说得,是哪里限制了字符串的传递,可找遍了,都找不到还有什么可能会影响字符串长度的地方。
    请大家帮帮我。
      

  10.   

    插入数据后,再用Update更新一遍就没有问题了
      

  11.   

    你的query是不是用了固定字段,是不是在固定字段的属性里设了字段长度?你看看吧
      

  12.   

    to:  newsofter(横空出世小霸王) 
    我在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本身的问题?
      

  13.   

    我改了TEXT,还是不行。从我发现的规律来看,应该是和控件有关,但不知道究竟是哪里出错了?