Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net中的SqlBulkCopy和ProgressBar_C#_Asp.net_.net_Progress Bar_Sqlbulkcopy - Fatal编程技术网

C# ASP.Net中的SqlBulkCopy和ProgressBar

C# ASP.Net中的SqlBulkCopy和ProgressBar,c#,asp.net,.net,progress-bar,sqlbulkcopy,C#,Asp.net,.net,Progress Bar,Sqlbulkcopy,实际上,我正在导入Excel文件,并通过SqlBulkCopy 一切都很好。 现在,我需要在通过SqlBulkCopy保存数据时显示一个ProgressBar 我的代码是: SBC.WriteToServer(dsExcel); SBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied); SBC.NotifyAfter = 1; 在SqlRowsCopied事件中: private static void OnSql

实际上,我正在导入
Excel
文件,并通过
SqlBulkCopy
一切都很好。 现在,我需要在通过
SqlBulkCopy
保存数据时显示一个
ProgressBar

我的代码是:

SBC.WriteToServer(dsExcel);
SBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
SBC.NotifyAfter = 1;
SqlRowsCopied
事件中:

private static void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e)
{
//here i tried calling my progressbar. But I'm unable to call it.                   
}  

我认为您需要在实例化对象之后和调用WriteToServer方法之前设置该值:

using (SqlConnection conn = new SqlConnection(ConnectionString))
{
    conn.Open();
    using (SqlBulkCopy sqlcpy = new SqlBulkCopy(conn))
    {
        sqlcpy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied); //<<---- You need to add this here
        sqlcpy.NotifyAfter = 1;
        sqlcpy.BatchSize = batchSize;
        sqlcpy.BulkCopyTimeout = 60;

        using (SqlCommand cmd = new SqlCommand(Sql, conn))
        {
            cmd.ExecuteNonQuery();
            sqlcpy.DestinationTableName = TableName;  //copy the datatable to the sql table
            sqlcpy.WriteToServer(dt);
            return sqlcpy.GetRowsCopied();
        }
    }
}

我认为您需要在实例化对象之后和调用WriteToServer方法之前设置该值:

using (SqlConnection conn = new SqlConnection(ConnectionString))
{
    conn.Open();
    using (SqlBulkCopy sqlcpy = new SqlBulkCopy(conn))
    {
        sqlcpy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied); //<<---- You need to add this here
        sqlcpy.NotifyAfter = 1;
        sqlcpy.BatchSize = batchSize;
        sqlcpy.BulkCopyTimeout = 60;

        using (SqlCommand cmd = new SqlCommand(Sql, conn))
        {
            cmd.ExecuteNonQuery();
            sqlcpy.DestinationTableName = TableName;  //copy the datatable to the sql table
            sqlcpy.WriteToServer(dt);
            return sqlcpy.GetRowsCopied();
        }
    }
}

谢谢你的回复。事实上,现在我的活动开始了。但是我无法获取ProgressBar的id。实际上,这段代码“return sqlcpy.GetRowsCopied();”的作用是什么?我没有得到任何‘sqlcpy’的方法,谢谢你的回复。事实上,现在我的活动开始了。但是我无法获取ProgressBar的id。实际上,这段代码“return sqlcpy.GetRowsCopied();”的作用是什么?我没有得到“sqlcpy”的任何方法