代码如下:
DataTable dt = this.DbAgent.ExeQuery(strSql);                if (dt != null && dt.Rows.Count > 0)
                {
                    ArrayList al = new ArrayList();
                    string[] para;
                    foreach (DataRow row in dt.Rows)
                    {
                        para = row["sql"].ToString().Split('¤');
                        if (para != null && para.Length > 0)
                        {
                            for (int i = 0; i < para.Length; i++)
                            {
                                al.Add(para[i]);
                            }
                        }
                    }
 我从oracle中读取一个long型的数据,这个long型的数据中存了N多的SQL,用¤分开,具体到我这个问题,long型的数据里面存了165行sql,现在我要执行里面的每一条sql,但是转换过来的时候里面总会有几条SQL语句是错误的,莫名其妙的出现了一些\0的字符,也就是para【i】中总有几条错数据,举例:
"insert into conf_ne_port(id,port_index,user_label,physical_label,class,speed,mac,element_id,description,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0alarm_status,del_flag) values ('$SUBNET=-1$ROUTER=172.16.2.92$PORT=71','71','Vlan2','Vlan2','1','1000','00:17:94:cf:1a:40','$SUBNET=-1$ROUTER=172.16.2.92','Vlan2','0','0')" 
本应该没有\0出现的
我用pl_sql导出这个数据找到对应的这条语句的时候发现这条语句和其他正常的语句没有任何区别,oracle里面存的数据是正确的,我把datatable换成oracledatereader数据还是出错,急求高手给帮忙看一下,非常感谢。

解决方案 »

  1.   

    改用CLOB类型...LONG不适合存放字符串,Oracle官方建议用户不要再使用LONG类型...
      

  2.   

    数据是后台采集的时候插进去的,现在没有办法更改,所以只能是long型
      

  3.   

    我觉得应该不是oracle中数据是long型读取出来出错的问题,如果是读取时出错,为什么会有大部分的数据都是正确的,只会出现几条错误的数据呢?