使用计数器在c#中批提交行到数据库

使用计数器在c#中批提交行到数据库,c#,sql-server,database,C#,Sql Server,Database,我正在用C语言开发一个文件解析器,这样我就有了一个包含许多行的文件。我想把它写入数据库 我已经创建了一个循环,在这个循环中我读取文件并发出一个insert 然而,我想做的是读说100行,然后提交所有100行,然后读下100行,然后提交它们,以此类推 我的问题(有点概念化)是如何找出最后一组行,因为这可能少于100行 例如,如果我的文件有550行,我可以读取5块100行,并使用行计数器上的模数运算符提交它们,但最后一批50行会发生什么情况 在这方面的任何想法都将受到高度赞赏 谢谢。这里是我最想说的

我正在用C语言开发一个文件解析器,这样我就有了一个包含许多行的文件。我想把它写入数据库

我已经创建了一个循环,在这个循环中我读取文件并发出一个insert

然而,我想做的是读说100行,然后提交所有100行,然后读下100行,然后提交它们,以此类推

我的问题(有点概念化)是如何找出最后一组行,因为这可能少于100行

例如,如果我的文件有550行,我可以读取5块100行,并使用行计数器上的模数运算符提交它们,但最后一批50行会发生什么情况

在这方面的任何想法都将受到高度赞赏

谢谢。

这里是我最想说的:

第一个选项,快速计数'\n',从而获得行数。然后,以2的倍数读取块,使结果非常接近行数,例如,如果存在501行,则读取250和250的块。那么只剩下一行了。第一次运行代码时,请检查奇数或偶数。如果为奇数,请记住提交最后一行,否则如果行数为偶数,则无需补偿最后一行。希望这有帮助


注意:在将数字除以2的倍数后,如果它非常大,如果在没有任何其他内容可读取时,read函数返回false,则可以进一步将其分成2(分治!)

。 那你可以试试这个

int i = 1;
while (read())
{
     if (i % 100 == 0)
     {
        for int (j = 0; j < 100; j++)
        { 
            write();
        }
     }
     i++;
}
for (int j = 0; j < i % 100; j++)
{
     write();
}
inti=1;
while(read())
{
如果(i%100==0)
{
对于int(j=0;j<100;j++)
{ 
write();
}
}
i++;
}
对于(int j=0;j
也许是这样的吧?以下是伪代码:

int rowCount = 0;
while more records to read
{
   // Get record
   // Parse record
   // Do something with results

   if(++rowCount % 100 == 0)
   {
      // Commit
      rowCount = 0;
   }
}
// If you have 0 records, you just did a commit (unless you had zero records to read,
// but I assume you can code your way around that!)  So you only need a final commit 
// if you had more than 0 records still uncommitted. 

if(rowCount > 0) 
{
   // Commit remaining records
}