首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >窗口服务C# -刷新问题

窗口服务C# -刷新问题
EN

Stack Overflow用户
提问于 2020-07-24 08:02:40
回答 1查看 43关注 0票数 0

我正在调度一个windows服务,以便从要加载到该SQL服务器中的路径中选择一个文件。我使用datatable写入SQL服务器。当选择从路径到加载的第一个文件时,当执行第二次或两次之后面临异常时,就可以了。

当我调试im不面对这种异常时,只在datatable中添加一次。这是缓存问题还是我的错误?

注意:当我重新启动服务时,在经过一段时间相同的异常发生后,它正常工作,没有异常。

日志中的异常:

--一个名为“SGC#1_Created_By”的列已经属于这个DataTable。索引超出了数组的界限。

代码语言:javascript
复制
try
{
    var columnDetails = GetTemplateColumn(UserId, lbtempid[tbl], DBConnection);
    SqlConnection bulkcon = new SqlConnection(DBEncryption);                
    bulkcon.Open();
    using (SqlTransaction transaction = bulkcon.BeginTransaction())
    {

        using (SqlBulkCopy sqlbc = new SqlBulkCopy(bulkcon, SqlBulkCopyOptions.KeepIdentity, transaction))
        {
            DataTable _table = new DataTable();
            _table = DsLocalBorrowingTbl.Tables[tbl];
            for (int _tbl = 0; _tbl < columnDetails.Count; _tbl++)
            {
                sqlbc.ColumnMappings.Add(columnDetails[_tbl].APL_MAS_CRA_Column_Name.Trim(), columnDetails[_tbl].APL_MAS_CRA_Column_Name.Trim());
            }
            sqlbc.ColumnMappings.Add("SGC#1_Created_By", "SGC#1_Created_By");
            sqlbc.ColumnMappings.Add("SGC#2_Created_On", "SGC#2_Created_On");
            sqlbc.ColumnMappings.Add("SGC#3_IsProcessed", "SGC#3_IsProcessed");
            sqlbc.ColumnMappings.Add("SGC#4_Processed_On", "SGC#4_Processed_On");
            System.Data.DataColumn newColumn = new System.Data.DataColumn("SGC#1_Created_By", typeof(System.Int32));
            newColumn.DefaultValue = UserId;
            _table.Columns.Add(newColumn);
            System.Data.DataColumn newColumn1 = new System.Data.DataColumn("SGC#2_Created_On", typeof(System.DateTime));
            newColumn1.DefaultValue = DateTime.Now;
            _table.Columns.Add(newColumn1);
            System.Data.DataColumn newColumn2 = new System.Data.DataColumn("SGC#3_IsProcessed", typeof(System.Int32));
            newColumn2.DefaultValue = 0;
            _table.Columns.Add(newColumn2);
            System.Data.DataColumn newColumn3 = new System.Data.DataColumn("SGC#4_Processed_On", typeof(System.DateTime));
            newColumn3.DefaultValue = DateTime.Now;
            _table.Columns.Add(newColumn3);
            SqlConnection sqlConn = new SqlConnection(DBConnection);
            sqlbc.DestinationTableName = "iCon." + lbsheet[tbl].Trim();
            sqlbc.WriteToServer(_table);
            sqlConn.Close();


            sqlConn.Open();
         
            int ErrorListId = GetErrorListLastIdentity(DBConnection);
            _LBErrocount += 1;
          DsLocalBorrowingTbl.Tables[tbl].Rows.Count, DsLocalBorrowingTbl.Tables[tbl].Rows.Count, DBConnection, 1);
            int statusCount = Convert.ToInt32(DsLocalBorrowingTbl.Tables[tbl].Rows.Count);
            transaction.Commit();
            _rowcount += DsLocalBorrowingTbl.Tables[tbl].Rows.Count;
        }
    }
    bulkcon.Close();
}
catch (Exception ex)
{
    WriteToFile(" StartExcelOperations_LocalBorrowing_Insertion error :" + ex.Message.ToString());
}
EN

回答 1

Stack Overflow用户

发布于 2020-07-24 10:08:28

似乎您首先要创建数据表,然后用一个from覆盖它,我猜是一个静态类。对此函数的任何后续调用都会产生问题。要么删除第2行,要么在初始化函数中添加一次列。

代码语言:javascript
复制
DataTable _table = new DataTable();
_table = DsLocalBorrowingTbl.Tables[tbl];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63069369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档