检查行计数,然后插入值

时间:2015-01-09 19:48:46

标签: c# sql asp.net sql-server

我有一个表单,我有一个列表框,可以选择不同日期的多个值。但要求是一个日期只能为2个用户预订2个用户预订日期然后我只需将其从列表框中删除。

我创建了3个表。一个表(table_dates)只显示不同行中的日期,第二个表(table_users)存储用户信息,第三个表(table_map)映射用户的日期。

如何编写逻辑来检查2个用户是否已注册所选日期?

请检查下面的c#代码

using (SqlCommand cmd = new SqlCommand())
{
    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "INSERT INTO table_users(Name,Email) OUTPUT INSERTED.userId Values (@name,@email)";
    cmd.Parameters.AddWithValue("@name", name);
    cmd.Parameters.AddWithValue("@email", email);
    int lastId = (int)cmd.ExecuteScalar();
    if (lastVolId > 0)
        {
            SqlCommand cmd2 = new SqlCommand();
            int counter = 0;
            string query = "";
            foreach (ListItem li in listBox.Items)
            {
                if (li.Selected)
                    {
                        // I need to write some thing here to check if selected date is registered 2 times
                        query = "INSERT INTO table_map(userId,dateId) VALUES('" + lastId + "','" + li.Value + "')";
                        cmd2 = new SqlCommand(query, conn);
                        cmd2.ExecuteNonQuery();
                        counter++;
                    }
            }

        }
        else
        {
            //Error notification
        }
    }

1 个答案:

答案 0 :(得分:0)

table_Date是否有唯一dateID的列?您想要执行的操作是强制性的。
您需要做的是执行SELECT QUERY以检查它是否存在两次。

String selectStatent="SELECT * FROM table_Map WHERE dateID = @dateID";    
SqlCommand selectCommand = new SqlCommand( selectStatement, connectionString);     
int rowCount = selectCommand.ExecuteScalaer();    
if(  rowCount <= 2)   
{    
  //Proceed   
}