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

时间:2015-01-15 06:30:22

标签: asp.net ajax

我有以下代码,基本上我希望它一步一步地使用If语句。当我运行它时,我得到这个asp错误:"此命令需要异步连接。设置"异步处理=真"在连接字符串中。" 在这段代码上: " 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;

1 个答案:

答案 0 :(得分:1)

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

还有一个BeginExecuteReader方法用于执行asncy读取操作,所以如果你不想要那个,只需使用ExecuteReader方法来获取数据。

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