如:table 结构为 :
SM_LEVEL VARCHAR2(1)             //里面存放着ascii值为158的字符通过oledb返回的结果为"",ASSII值为0,也即是NIL.
而sql_plus是可以返回正确的结果的。
请帮忙解决。

解决方案 »

  1.   

    因为C#是用unicode,建议在数据库中用unicode,如sqlserver中用nvarchar类型,ACCESS中用文本
      

  2.   

    是oledb在读取的过程中作了判断,不是有效的字符就返回空。好多语言里都会这样,建议不要保存半个汉字,必须要存也不要用char()或varchar(),用整型自己处理。
      

  3.   

    oledb把ascii 大于127的字符写到oracle数据库时,写进去的值不对。
    如,把 ((Char)158).ToString()写入数据库时,查询
    select ascii(sm_level) from secmast
    它的值是191.这是怎么回事呢?是否与编码有关呢?
      

  4.   

    其实就是通过oldeb.net把大于127的字符读写到oracle的问题。有谁碰到过吗?请指点一下。