我有一个表单,我有一个列表框,可以选择不同日期的多个值。但要求是一个日期只能为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
}
}
答案 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
}