-1

这是我的桌子

roomtype, number of rooms
Ac         10

我想从表中检索值并将房间减去 1 并更新上表。如何使用 c# 在 asp.net 中编写检索代码。更新代码如下,我正在检查房间的可用性是否>1,然后它才会更新和插入,但它没有这样做。它直接执行else部分。帮我找出错误。

protected void Button1_Click(object sender, EventArgs e)
{
    string type = DropDownList1.SelectedItem.ToString();
    string name = TextBox2.Text;
    string nop = DropDownList2.SelectedItem.ToString();
    int num = int.Parse(nop);
    string connectionString = WebConfigurationManager.ConnectionStrings["HMSConnectionString"].ConnectionString;
    SqlConnection connection = new SqlConnection(connectionString);

    string qry3 = "select * from availiability where RoomType=@type";
    SqlCommand cmd3 = new SqlCommand(qry3, connection);
    cmd3.Parameters.AddWithValue("@type", type);
    cmd3.ExecuteReader();
    SqlDataAdapter ad = new SqlDataAdapter(cmd3);
    DataTable dt = new DataTable();
    if (dt.Rows.Count > 0)
    {

        if ((int)dt.Rows[0]["no_of_rooms"] > 1)
        {
            string qry = "insert into RoomType values('" + type + "','" + name + "','" + num + "') ";
            SqlCommand cmd = new SqlCommand(qry, connection);
            connection.Open();
            int g = cmd.ExecuteNonQuery();
            if (g != 0)
                Label5.Text = "Reserved for" + name;
            connection.Close();

            string qry2 = "update availiability set RoomType=@type ,availiable_rooms=@av";
            SqlCommand cmd2 = new SqlCommand(qry2, connection);
            cmd2.Parameters.AddWithValue("@type", type);
            cmd2.Parameters.AddWithValue("@av", dt.Rows[0]["no_of_rooms"] - 1);
            connection.Open();
            cmd2.ExecuteNonQuery();
            connection.Close();

        }
    }
    else
    {
        label5.Text = "No Rooms Availiable in " + type;
    }
}
4

2 回答 2

0

看起来您正在尝试从头开始编写(又名 Web 表单)。虽然这令人钦佩,但您是否可以选择使用更适合您想要做的事情的框架?例如,带有实体框架的 ASP.NET MVC。甚至是带有实体框架的 Web API。两者都支持 POST/DELETE/PUT/GET 并且一切都已为您准备好,因此您无需担心手动编码查询等。Entity Framework 为您完成所有工作。

但是,如果你不能,似乎你所拥有的应该工作。这是一个很容易解决的问题。如上所示,只需将 Rooms 更新为新值。

于 2013-10-14T15:25:57.377 回答
0
protected void Button1_Click(object sender, EventArgs e)
{
    string type = DropDownList1.SelectedItem.ToString();
    string name = TextBox2.Text;
    string nop = DropDownList2.SelectedItem.ToString();
    int num = int.Parse(nop);
    string connectionString = WebConfigurationManager.ConnectionStrings["HMSConnectionString"].ConnectionString;
    SqlConnection connection = new SqlConnection(connectionString);

    string qry3 = "select * from availiability where RoomType=@type";
    SqlCommand cmd3 = new SqlCommand(qry3, connection);
    cmd3.Parameters.AddWithValue("@type", type);
    cmd3.ExecuteReader();
    SqlDataAdapter ad = new SqlDataAdapter(cmd3);
    Dataset ds = new Dataset();
    ad.Fill(ds);
    if (ds ! =null)
 {  
    if (ds.Rows.Count > 0)
    {

        if ((int)ds.Rows[0]["no_of_rooms"] > num) //Check if rooms are available 
        {
            string qry = "insert into RoomType values('" + type + "','" + name + "','" + num + "') ";
            SqlCommand cmd = new SqlCommand(qry, connection);
            connection.Open();
            int g = cmd.ExecuteNonQuery();
            if (g != 0)
                Label5.Text = "Reserved for" + name;
            connection.Close();

            string qry2 = "update availiability set RoomType=@type ,availiable_rooms=@av";
            SqlCommand cmd2 = new SqlCommand(qry2, connection);
            cmd2.Parameters.AddWithValue("@type", type);
            cmd2.Parameters.AddWithValue("@av", convert.toint32(ds.Rows[0]["no_of_rooms"]) - num);
            connection.Open();
            cmd2.ExecuteNonQuery();
            connection.Close();

        }
    }
    }
    else
    {
        label5.Text = "No Rooms Availiable in " + type;
    }
}
于 2013-10-14T15:26:22.610 回答