我用的是英文操作系统XP,开发的软件本来都是用英文的,但是现在要汉化,于是碰到了许多问题,现在许多问题都解决了,但是最后一个问题却始终解决不了。我用的 DELPHI 5. 数据库是MS SQL 2000. 因为我单位的DELPHI 5是正版的,所以即使有D版的 DELPHI 7, 我还是不用。另外补丁过的DELPHI 5也没有什么太多的BUG,所以还可以。从DELPHI 5迁入到DELPHI 7,也有许多麻烦,所以不高兴换。现在的问题是: 我用TADOTABLE可以存放汉字数据,但是用TADOQUERY自己构造SQL语句, 却不能把汉字存放进去,即存入的数据都是逗号.我知道存放汉字的两条方法,一是把数据构造成nvarchar, 另外是insert 语句中加入 N字符串.现在用TADOTABLE, 我用
  ATBLJOURNAL['JOURNAL'] := MEMO1.LINES[i];
就可以圆满解决。但是因为 TADOTABLE.open 打开的时候,会用大量的资源,会很慢,尤其是个日志文件,数据是非常大量的。所以我不喜欢用。
但是用INSERET语句: 'INSERT INTO JOURNAL VALUES(:JOURNAL)' 
在参数替代的时候:myQuery.Parameters.Paramvalues['JOURNAL'] := MEMO1.LINES[i]
总是插入的是非汉字代码,这个字段是可以直接编辑输入汉字的。自己在想每次循环的时候,用一个字符串把LINES[i]的值直接替代出来,构成例如 :
 INSERT INTO JOURNAL VAULES(n'中文数据')这样的SQL语句可能是可以的, 但是每次需要一组指令:
myQuery.Close
myQuery.SQL.Clear
myQuery.SQL.Add()
myQuery.SQL.Open
实在缺乏美感。
现在很觉得不舒服,各位高手有什么指教,谢谢。

解决方案 »

  1.   

    这个问题的核心就是delphi5 自己已经把汉字问题很圆满地解决了,但是由sql处理的时候没有很好地解决,这和delphi版本有什么关系没有?另外目前为止,什么版本的delphi可以安装在vista上,我的这个程序在vista上不可以运行,delphi7 也不可以在vista上正常安装。
      

  2.   

    但是用INSERET语句: 'INSERT INTO JOURNAL VALUES(:JOURNAL)' 
    在参数替代的时候:myQuery.Parameters.Paramvalues['JOURNAL'] := MEMO1.LINES[i] 
    总是插入的是非汉字代码,这个字段是可以直接编辑输入汉字的。 我一般都是使用得带参数得sql语句,没遇到你得现象啊。我想问题是出在:= MEMO1.LINES[i]上,跟踪一下试试看,最简单得方法是把他showmessage出来看看。
    我也用过delphi5+sql2000,从未遇到过你的问题啊,不过我的windows是中文版。不行得话使用 可变体参数看看?
      

  3.   

    谢谢你的回复,你的是中文版的WINDOWS,一定没有问题的。问题也绝不会处在MEMO1.LINES[i]上,因为用showmessage显示是正常汉字什么是可变体参数?
      

  4.   


    'INSERT INTO JOURNAL VALUES(:JOURNAL)' 
    在参数替代的时候:myQuery.Parameters.Paramvalues['JOURNAL'] := MEMO1.LINES[i] 这就是可变参数啊另外,你的memo里的数据是从哪里来的,自己填写的,还是从txt文件加载的,或其他方式得到的
      

  5.   


    程序产生的,内中有汉字。这个问题和MEMO1.LINES中的内容没有任何关系, 里面包含的是汉字,否则用
    ATBLJOURNAL['JOURNAL'] := MEMO1.LINES[i]; 
    是不会成功地存入汉字的。这个问题完全并且唯一只和TADOQUERY有关。
      

  6.   

    花了好大的功夫,终于在英文版VISTA 上安装好了DELPHI 7,打上了补丁1.1, 并且用上了 sql 2005 express, 结果却和 delphi5 相反,TADOTABLE不支持 中文, 而TADOQUERY支持中文。
    我一向来不太喜欢BORLAND的东西。测试比微软差多了。
      

  7.   

    [color=#0000FF]INSERT INTO JOURNAL VAULES(n'中文数据')这样的SQL语句   是正解![/color]
      

  8.   

    insert into "中文表" values ('中文数据');