十六进制值0x00,是一个无效字符:用“”替换\ 0后仍然遇到问题

时间:2010-08-16 01:54:35

标签: c# asp.net xml

我的代码有问题。 我在Visual Studio 2010中使用了ASP.NET。

当我从数据库中检索数据到webservice中的数据表时,某些列会给我一个空字符串数据。这导致检索和显示XML的一些问题。我尝试用Replace ("","")替换\0\0\0。这可以解决问题。但现在的问题是,原始数据仍然显示在XML中。原始数据是\0\0的数据。在替换之前,XML字段为<VNDPNO></VNDPNO>,替换后变为<VNDPNO />

我的问题是,如何隐藏原始数据。 当我打电话给我时,我不想要原始数据 它会一直显示在<diffgr:before>的网络浏览器中。

我的源代码是:

public DataTable GetItmSupDtls(string companycode, string itemCode, 
                               string itemMajor, string itemMinor)
{
    DataTable dsItmSupDtls;
    //DataSet dsItmSupDtls = new DataSet();
    IDBManager dbManager = new DBManager(DataProvider.SqlServer);
    dbManager.ConnectionString = _connString;
    try
    {
        dbManager.Open();
        dbManager.CreateParameters(4);
        dbManager.AddParameters(0, "@COYCDE", (object)companycode);
        dbManager.AddParameters(1, "@ITMCDE", (object)itemCode);
        dbManager.AddParameters(2, "@ITMMAJ", (object)itemMajor);
        dbManager.AddParameters(3, "@ITMMIN", (object)itemMinor);
        dsItmSupDtls = dbManager.ExecuteDataSet(
            CommandType.StoredProcedure, 
            Utilities.DatabaseName("DBPurchase") + ".dbo.ITMSUPINFO_STKBALENQUIRY"
        ).Tables[0];
    }

    catch (Exception ex)
    {
        throw ex;
    }

    finally
    {
        dbManager.Dispose();
    }

    DataTable result = dsItmSupDtls.Clone();

    foreach (DataRow dtRow in dsItmSupDtls.Rows)
    {
        dtRow["VNDPNO"] = 
            dtRow["VNDPNO"].ToString().Replace("\0", ""); //"A"; //
        result.ImportRow(dtRow);
    }
    return result;
}

请给我一些评论和建议。

非常感谢..

1 个答案:

答案 0 :(得分:0)

您的信息传输方式是通过差异。我认为如果你使用ImportRow而不是InsertRow,它的历史就会随之而来。由于InsertRow对于大量行而言可能更昂贵,因此当值包含null时,您可能只想使用ImportRow。