System.Data.OleDb.OleDbConnection ExecuteReader()结果被截断

时间:2013-08-09 16:33:00

标签: c# sql-server-ce datareader oledbconnection

我正在使用内部创建的excel导入工具。该工具应该通过excel电子表格读取并将结果导入sql ce数据库。我已经检查了数据库,现在知道在调试之后问题就出现了,我从excel电子表格中得到了值。我的问题是返回的结果被截断。

当我在标记为“Here”的注释中检查我的代码时,rdr.GetValue(col).ToString()已被截断。我想知道是否需要采取不同的措施来获得细胞的全部价值。

using (var cmd = _xlConn.CreateCommand())
{
    cmd.CommandText = "SELECT * FROM [" + entityType.Name + "$]";

    try
    {
        using (var rdr = cmd.ExecuteReader())
        {
            while (rdr.Read())
            {
                if (!rdr.IsDBNull(0))
                {
                    var id = Convert.ToInt32(rdr.GetValue(0));
                    var eid = Entity.InsertRecord(entityType.Name + "_" + id, entityType.ID, true);

                    map.Add(id, eid);

                    int col = 0;

                    foreach (var entityKey in _entityKeys.Where(ek => ek.EntityType_Fk == entityType.ID))
                    {
                        if (!rdr.IsDBNull(++col))
                        {
                            //-------------------------
                            //--------- HERE ----------
                            //-------------------------
                            EntityKeyData.InsertRecord(eid, entityKey.ID, rdr.GetValue(col).ToString());
                        }
                    }
                }
            }
        }
    }
}

这是我传递的数据:

<h1><span style="color:blue; margin: 10, 10, 10, 10; font-family:Arial;">You can drive
or walk on main street… Sometimes… When we allow it. Lalalalalalla lalallala lalalalal 
lalallalal allalalalalla lalallalalalalal alalallasldlal dldlaldsls dldlldl 
laldfolafjlkmn oiasfjadlfjalkfj lkajdflidja laisdjfolieanfldsn  ladllaldladsl 
aldllselasldeesl dfoaihfneal  adfajlkfmf alsiej</span></h1>

这是截断的内容:

<h1><span style="color:blue; margin: 10, 10, 10, 10; font-family:Arial;">You can drive 
or walk on main street… Sometimes… When we allow it. Lalalalalalla lalallala lalalalal 
lalallalal allalalalalla lalallalalalalal alalallasldlal dldlaldsls dldlldl laldf

我对截断的文本进行了字符计数,结果为255这是一个常见的问题吗?

1 个答案:

答案 0 :(得分:0)

上面发布的链接帮助我找到答案。我发现自从我使用excel作为我的源代码后,读者将通过第一组列来为每列提供数据长度。如果不长,则默认值为255。我的方法是使用我的第一个数据行作为一个虚拟行,并且在非常长的列中,我添加了一个长字符串。