急!用DELPHI写的程序向SYSBASE数据库INSERT记录出错,谁能解决?(与character set有关)(50分)

  • 主题发起人 主题发起人 zhangdamin
  • 开始时间 开始时间
Z

zhangdamin

Unregistered / Unconfirmed
GUEST, unregistred user!

FieldByName('MM').asstring:=chr(136);//MM字段为CHAR类型

SQL Error: SYBASE - Error converting client characters into server's character set. Some character(s) could not be converted.



 
一般来说,字符集和排序顺序在安装sql server的时候就定了
要主意的地方
主要是 如果你的sql server 有多个,那么一定要选择同样的
字符集和排序顺序,否则互相倒数据可能会有问题
还有,如果你需要存储特殊字符,那么你必须选择包含这些字符的
字符集 最后注意打小写敏感的问题

我没有试过,一些建议:
1. bde中的字符集选择修改一下看看
2.用sp_configure 修改一下sybase的缺省字符集
 
试试下面的方法,我已经通过了(sybase)

xh,xm 均为 char 字段

Query1.SQL.Clear;
Query1.SQL.Add('insert into student(xh,xm)');
Query1.SQL.Add('values :xh,:xm');
query1.ParamByName('xh').Asstring:=Edit2.Text ;
query1.ParamByName ('xm').AsString:=Edit3.Text ;
Query1.Close;
Query1.ExecSQL;

 
改正
query1.sql.add('values(:xh,:xm)');
 
chr(136)等字符(在本系统中为加密后的字符串)如何输入到Edit2中?
 
将Edit2的passwordchar设为‘*’即可
 
写句无聊的话,纯属灌水!
你怎么些的是程序是:
FieldByName('MM')
MM?
 
begin

FieldByName('MM').asstring:=encrypt(edit1.text) ;
//encrypt为加密字符串函数,edit1.text加密后会产生CHR(136)等类似字符
此问题可能与client与sybase的字符集不同有关(client为ISO-1,
SYBASE为CP850)
不知道delphi中是否有将某一字符集的字符转成另一字符集的字符函数???
 
附加功能 将问题提前
 
zhangdamin:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
zhangdamin:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。

 
接受答案了.
 
后退
顶部