ASP.Net 中没有异步的嵌套查询

Nested Queries In ASP.Net Without Async

我有以下代码,基本上我希望它使用 If 语句逐步执行。然而,当我 运行 这个时,我得到这个 asp 错误: "This command requires an asynchronous connection. Set "Asynchronous Processing=true" in the connection string." 在这段代码中: "addToTable.BeginExecuteReader();"

但是我不希望它通过异步进行,我希望它 运行 只有满足先前的条件才能进行后续查询。

完整代码如下:

string dataset="";
            if (System.Web.HttpContext.Current.Session["user"] != null)
            {
                if (name != null && carId != null)
                {
                    using (SqlConnection con = new SqlConnection(st))
                    {


                        string getCar = "SELECT * FROM [Car] WHERE CarId = @carId";
                        SqlCommand cmd = new SqlCommand(getCarData, con);
                        cmd.Parameters.AddWithValue("@carId", carId);


                        using (cmd)
                        {
                            con.Open();
                            SqlDataReader data = cmd.ExecuteReader();

                            if (data.HasRows)
                            {
                                while (data.Read())
                                {
                                    if (data["available"].ToString() == "0")
                                    {
                                        data.Close();
                                        SqlCommand getParts = new SqlCommand("SELECT * FROM [CarCustomer] WHERE UserId = @UserId AND car=@carId", con);
                                        getParts.Parameters.AddWithValue("@userId", System.Web.HttpContext.Current.Session["userId"]);
                                        getParts.Parameters.AddWithValue("@carId", carId);
                                        SqlDataReader grabRows = getParts.ExecuteReader();
                                        if (grabRows.HasRows)
                                        {
                                            grabRows.Close();
                                            SqlCommand updateTable = new SqlCommand("UPDATE [Table1] SET salesAmount=5 WHERE UserId=1", con);

                                            updateTable.BeginExecuteReader();
                                        }
                                        else
                                        {
                                            grabRows.Close();
                                            SqlCommand addToTable = new SqlCommand("INSERT INTO [Table1] (salesAmount)  Values("1")", con);

                                            addToTable.BeginExecuteReader();
                                        }
                    dataset="good"

                                    }

                                }
                            }

                        }
                    }
                }

            }

            return dataset;

而不是 BeginExecuteReader 命令使用 SqlCommand.ExecuteNonQuery ,因为 ExecuteNonQuery 用于执行插入、更新和删除等查询,其中使用获取数据读取方法。

还有一件事 BeginExecuteReader 方法用于执行异步读取操作,所以如果您不想要它,只需使用 ExecuteReader 方法来获取数据。

阅读SqlCommand.ExecuteNonQuery - 您可以使用 ExecuteNonQuery 执行目录操作(例如,查询数据库的结构或创建数据库对象(如表)),或者通过执行 UPDATE、INSERT 或 DELETE 语句来更改数据库中的数据而不使用 DataSet。