数据表选择操作导致索引损坏

时间:2018-02-27 10:07:39

标签: c# vb.net wcf

我正在使用一个Web服务,其中许多操作应该从数据库中填充数据。为了避免对数据库的并发调用,我创建了一个带有静态数据变量的类,我的方法将对数据表执行select操作以获取用户名,通过用户代码过滤。 偶尔无规,被调用的webMethods返回ERROR400(坏请求)到客户端,所述误差是"异常消息为'数据表内部索引已损坏:' 5'&#34 ;。 我已经研究过这个问题,但不幸的是,大多数主题都是在多线程环境中处理数据表的操作(添加/修改/删除行),而我的操作只包含数据表上的select操作。 请找填充DataTable中的代码,(这是理论上将彻底填补了数据表,在所有Web方法调用下面,因为一旦数据表被填满时,"如果(DtName ==" dtUsers&# 34;&& dtUsers == null)"条件将阻止重新填充)。

  public static DataTable dtUsers;
     public static void InitialiseData(string DtName)
        {
            try
            {
                var client = new MongoClient(EMRWS.MongoConstr);
                var db = client.GetDatabase(EMRWS.MongoDB);
                DataRow dr1;
                if (DtName == "dtUsers" && dtUsers ==null)
                {
                    var usercol = db.GetCollection<Cls_Users>("tbl_Users");
                    dtUsers = new DataTable();
                    dtUsers.Columns.Add("usercode", typeof(string));
                    dtUsers.Columns.Add("username", typeof(string));
                    dtUsers.Columns.Add("usertype", typeof(string));
                    dtUsers.Columns.Add("usersubtype", typeof(string));
                    usercol.AsQueryable().ToList().ForEach
                    (
                    p =>
                    {
                        dr1 = dtUsers.NewRow();
                        dr1["usercode"] = p.User_Code;
                        dr1["username"] = p.User_Name;
                        dr1["usertype"] = p.User_Type;
                        dr1["usersubtype"] = p.User_SubType;
                        dtUsers.Rows.Add(dr1);
                    }
                    );
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

0 个答案:

没有答案