开发者社区> 问答> 正文

仅在我第一次启动ASP.NET应用程序时才执行在数据库中插入吗?

我的问题是,在我的ASP.NET应用程序中,仅在应用程序启动时才第一次执行从窗体中插入数据的操作。之后,插入也不会完成。

我尝试调试该应用程序,并且在调试模式下每次都插入数据。我还使用了SQL Server事件探查器,除了第一次在数据库中提交表单外,数据库中没有插入内容。但是,当我在调试模式下运行时,插入操作没有任何问题。

这是来自Controller的方法:

[HttpPost]
public ActionResult Form(Product p)
{
    IO.Insert(p);
    return RedirectToAction("Index");
} 
这是执行插入的方法:

public static void Insert(Product pr)
{
    using (SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["Database"]))
    {
        connection.Open();

        string s = "INSERT INTO Product (Id, Name, Price, Description, Category, Image) VALUES (@GUID, @Name, @Price, @Description, @Category, @Image)";

        using (SqlCommand cmd = new SqlCommand(s, connection))
        {
            cmd.Parameters.Add("@GUID", SqlDbType.UniqueIdentifier).Value = new Guid();
            cmd.Parameters.Add("@Name", SqlDbType.NChar).Value = pr.Name;
            cmd.Parameters.Add("@Price", SqlDbType.Int).Value = pr.Price;
            cmd.Parameters.Add("@Description", SqlDbType.NVarChar).Value = pr.Description;
            cmd.Parameters.Add("@Category", SqlDbType.NVarChar).Value = pr.Description;
            cmd.Parameters.Add("@Image", SqlDbType.VarBinary).Value = IO.ImageInsert(pr.Picture);

            cmd.BeginExecuteNonQuery();
        }
    }

} 另外,除了主线程外,我没有使用任何其他线程。

展开
收起
祖安文状元 2020-01-03 16:14:07 743 0
1 条回答
写回答
取消 提交回答
  • 您正在using块中包含命令,cmd.BeginExecuteNonQuery();启动此SqlCommand描述的Transact-SQL语句或存储过程的异步执行。通过使用BeginExecuteNonQuery方法返回的属性或返回的IsCompleted属性,通过轮询以确定命令是否已完成,您无需等待命令完成。IAsyncResultAsyncWaitHandleIAsyncResult

    您可以按以下方式更改代码以等待命令执行。

    IAsyncResult result = cmd.BeginExecuteNonQuery();
    
    while (!result.IsCompleted)
    {
       // Wait till the command executes
       Console.WriteLine("Waiting for query execution");
    }
    Console.WriteLine("Command complete. Affected {0} rows.", cmd.EndExecuteNonQuery(result));
    
    2020-01-03 16:14:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载