c# - ASP.NET - MySQL 批量插入每行异步响应

标签 c# asp.net mysql ajax

我正在创建一个网络应用程序,我需要上传客户列表 进入数据库后,列表将来自 CSV、TSV 或 EXCEL 文件。

这些文件可能包含 50-200 条记录

我需要一种方法来为数据库中的每一行插入提供响应给客户端。 例如成功或失败。

不想执行所有插入,然后返回结果摘要。

我只需要知道如何做到这一点。如果您不能提供代码也没关系。但如果可以的话当然更好。

请随意标记、编辑或重新标记..

谢谢。最好的问候!!!

最佳答案

我将尝试一个基于使用 session 、javascript 计时器和 AJAX 调用的答案。

客户端和服务器之间最常见的通信方式是客户端向服务器请求某些信息。这是在 JavaScript 中通过计时器实现的,当时间过去时,进行 AJAX 调用并创建一个新的计时器来执行相同的操作。

在服务器上,您可以启用 AJAX Methods这些将是 AJAX 调用的入口点。该方法将响应您的插入的状态。

由于您在两个位置处理插入,一个在执行插入的页面中,另一个在 AJAX 方法中(该方法是静态的,您无法访问 Page 实例),因此您需要将逻辑移至单独的位置类并跟踪 session 中的插入。

所以代码将如下所示:

public class CsvInserts
{
   private IList<string> InsertsProgress {
        get {
             if (HttpContext.Current.Session["CsvInserts.Inserts"] == null )
                HttpContext.Current.Session["CsvInserts.Inserts"]  = new List<string>();
             return (IList<string>)HttpContext.Current.Session["CsvInserts.Inserts"];
        }
   }
   public IList<string> GetInsertsProgress() {
         return InsertsProgress;
   }
   public void InsertFile(string[] lines) {
         foreach ( var line in lines)
              {
                    var row = DataAccess.CsvInserts.Insert(line); // code to insert the line
                    InsertsProgress.Add(row.GetRelevantInfoForUser()); // successfully inserted or not and which line was inserted
              }
   }
}

在插入页面上你将做这样的事情

protected void btInsert_OnClick(object sender, EventArgs e)
{
  var lines = .. get lines from the posted file;
  var insertManager = new CsvInserts();
  insertManager.InsertFile(lines);
}

WebMethod 将是这样的

[WebMethod]
  public static IList<string> GetInsertsProgress()
  {
          var insertManager = new CsvInserts();
          return insertManager.GetInsertsProgress();
  }

在带有该计时器的客户端,您将一次又一次地调用此方法,直到插入完成。用 jQuery 或其他东西显示收到的字符串。

这段 C# 代码来自内存,更像是一个指南。抱歉没有提供 JavaScipt 代码。此外,您还必须在插入完成或创建新的批量插入时清除字符串列表。

关于c# - ASP.NET - MySQL 批量插入每行异步响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9342652/

相关文章:

来自两个表的MySql复杂查询

来自数据库数组的 PHP TreeView

c# - 如何根据字符串动态调用类?

c# - 为什么我的文本文件会突然停止保存?

c# - 我应该如何测试复杂的方法?

c# - 从控件添加对 header 的引用

c# - WPF DataGrid,DataGrid 上选定的行颜色 MVVM 中的 SelectedItem 更改

代码隐藏中调用代码隐藏函数的 ASP.Net 按钮

c# - 从 web.config 文件获取 sql 连接字符串

php - laravel 中的关系和 Blade