gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 02:33:17 25 4
gpt4 key购买 nike

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

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

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

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

我只需要有关如何执行此操作的想法。如果您不能提供代码也没关系。但如果可以,当然更好。

请随时标记或编辑或重新标记..

谢谢。最好的问候!!!

最佳答案

我将尝试一个基于使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com