请教一个连接Sybase数据库的问题

本文探讨了在.NET环境下使用Sybase ASE数据库时遇到的中文写入不完整的问题。通过分析发现,问题源于数据库字段不支持Unicode。文章对比了不同数据库和操作方式下的结果,并寻求解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.NET中,连接Sybase ASE数据库,作Insert或update操作,代码如下:
   string str="Provider=Sybase.ASEOLEDBProvider;Server Name=192.168.0.3,6700;Pooling=true;Min Pool Size=10;Max Pool Size=100;Connection Lifetime=30;Initial Catalog=club;User Id=sa;Password=";
   OleDbConnection conn=new OleDbConnection(str);
   string sql="update web_guestbook set cont=? where id=1";
   OleDbCommand cmd=new OleDbCommand(sql,conn);
   cmd.Parameters.Add("cont",OleDbType.LongVarChar  ).Value=this.textBox1.Text;
   conn.Open();
   try{cmd.ExecuteNonQuery();}
   catch(Exception ed){MessageBox.Show(ed.Message );}
   finally{conn.Close();}
  在web_guestbook表中,cont为text字段,(ASE数据库好象不支持ntext字段?12.5版)
  执行上面代码后,如果文本框中填的是全英文,则数据库可以正常写入,如果写入的有中文,则无法完全写入,比方说cont="你们好吗同志们?",则写入数据库的只有"你们好吗"四个字,究其原因,我想是因为text字段未支持Unicode,写入八个字,而数据库仅接收八个字符。如改Command.Parameter.OleDbType=LongVarWChar(即Unicode),则出错:"The given type name was unrecognized",而ASE数据库又不支持ntext字段,这个怎么好???
  另一方面,如使用MS SQLSERVER数据库,即使是text字段,也可以完全写入(想不通)。
  另外,如果不用代码,而使用工具箱中的OLEDBDataAdapter控件,并用其生成数据集,用OleDBDataAdapter.Update(),这样的话又可以完全写入(想不通!)数据适配器的updatecommand和InsertCommand也没什么特别,跟手写的sql一模一样.。
   强烈请教!救人一命,胜造七级浮屠啊~~~~~阿弥陀佛!!!!

转载于:https://www.cnblogs.com/uncleson/archive/2006/07/06/443977.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值